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



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

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

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

有没有一种简单的方法来提亮纹理?

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

谢谢。

这很容易:在你想要变亮的区域上绘制另一个四边形,使用覆盖四边形

glBlendFunc(GL10.GL_DST_COLOR, GL10.GL_ONE);

这实际上意味着您将基础颜色(dst,GL_ONE(保持原样,并添加另一个相同颜色的分数(src,GL10.GL_dst_color(。

添加的分数由四边形的颜色指定,因此现在可以通过将覆盖四边形的顶点颜色设置为{0.0f,0.0f,0.0.f}(无增亮(到{1.0f,1.0f,1.0}(亮度加倍(来调整亮度。当然,你也可以通过调整因素来增加单个颜色的亮度。

祝你好运!

干杯,阿尔特。

最新更新