我正在显示使用应用于四边形的多个纹理(具有透明度)构建的2D精灵。我为glDrawArrays启用了颜色数组,并且知道如何使用它来改变每种颜色的比例并使纹理变暗(即减少所有颜色相同的颜色)。
这一切都是使用预乘的alpha和以下内容完成的:
glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
还有一种简单的方法可以使纹理变亮吗?
我尝试使用GL_ADD,但这会导致整个四边形变得可见(即以前透明的像素不再存在)。
感谢。
答案 0 :(得分:2)
这很简单:在你希望亮化的区域上绘制另一个四边形,使用
覆盖四边形glBlendFunc(GL10.GL_DST_COLOR, GL10.GL_ONE);
其中effectively表示您按原样获取基础颜色(dst,GL_ONE),并添加相同颜色的另一部分(src,GL10.GL_DST_COLOR)。
您添加的分数由四边形的颜色指定,因此您现在可以通过将覆盖四边形的顶点颜色设置为{0.0f,0.0f,0.0f}(不增亮)到{1.0f来调整亮度, 1.0f,1.0f}('倍增'亮度)。当然,您也可以通过调整因素来增加单个颜色的亮度。
祝你好运!干杯,阿尔特。