我有一个粒子系统在背景纹理上渲染。每个粒子都是正方形,没有纹理应用于它,它们都是相同的颜色。背景是灰度纹理。 我想要实现的是在应用程序(如Gimp)中已知的混合类型,即颜色混合模式。Opengl ES混色模式
基本上,由粒子覆盖的背景区域应保持其亮度,但采用粒子的颜色。 我试过几个glBlendFunc()参数的组合,并尝试用glTexEnv搞乱,但我在理解它时遇到了很多麻烦。 目前,如果两个粒子重叠,它们或者变亮或变暗(取决于glBlendFunc参数)。
我在android上使用OpenGL ES 1.1。没有任何方法可以在不使用OpenGL ES 2.0的情况下实现这种效果?如果是这样,那是什么?
在第二步,如果我在HSL中最大化亮度,不要得到纯白色?转换回RGB我得到(255,255,255)。所以我尝试使用HSV色彩空间并使值最大化,但粒子重叠时背景变暗。 – Davide
你是对的,在HSL中应该是0.5的明亮度,而不是1.0(这是纯白色的)。值为1.0的HSV应该给出相同的结果。这个想法是,用纯色进行乘法应该不会导致亮度的变化。这只适用于纯色(你可以很容易地验证,例如RGB =(255,0,0)。) –
我得到所需的效果,但只有颜色(255,0,0),(0,255,0)和(0,0,255)。如果我在HSL中使用(204,0,255)(288º,100%,50%)之类的东西,重叠会变得更暗。 – Davide