什么是在OpenGL ES中提亮映射到四边形的纹理的简单方法?

时间:2011-07-01 01:59:28

标签: opengl-es colors

我正在显示使用应用于四边形的多个纹理(具有透明度)构建的2D精灵。我为glDrawArrays启用了颜色数组,并且知道如何使用它来改变每种颜色的比例并使纹理变暗(即减少所有颜色相同的颜色)。

这一切都是使用预乘的alpha和以下内容完成的:

glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);

还有一种简单的方法可以使纹理变亮吗?

我尝试使用GL_ADD,但这会导致整个四边形变得可见(即以前透明的像素不再存在)。

感谢。

1 个答案:

答案 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}('倍增'亮度)。当然,您也可以通过调整因素来增加单个颜色的亮度。

祝你好运!

干杯,阿尔特。