【发布时间】:2009-08-26 00:15:22
【问题描述】:
我想增加 OpenGL 渲染中使用的纹理的亮度。比如让它变成鲜红色或白色。这是一个 2D 渲染环境,其中每个精灵都作为纹理映射到 OpenGL 多边形。 我对处理数据知之甚少,而且我的引擎使用纹理缓存,因此更改整个表面会影响使用纹理的所有内容。 我可以通过使用“蒙版”并覆盖它来模拟效果,从而使精灵具有纯色,但这会占用内存。 是否有其他解决方案?
【问题讨论】:
我想增加 OpenGL 渲染中使用的纹理的亮度。比如让它变成鲜红色或白色。这是一个 2D 渲染环境,其中每个精灵都作为纹理映射到 OpenGL 多边形。 我对处理数据知之甚少,而且我的引擎使用纹理缓存,因此更改整个表面会影响使用纹理的所有内容。 我可以通过使用“蒙版”并覆盖它来模拟效果,从而使精灵具有纯色,但这会占用内存。 是否有其他解决方案?
【问题讨论】:
如果您的需求负担得起,您总是可以编写一个非常简单的 GLSL 片段着色器来执行此操作。它实际上是一个班轮。
比如:
uniform sampler2d tex;
void main()
{
gl_FragColor = texture2d(tex, gl_TexCoord[0]) + gl_Color;
}
【讨论】:
也许是GL_ADD 而不是 GL_MODULATE?
【讨论】:
使用GL_MODULATE 将纹理颜色乘以当前颜色。
请参阅this page 中的纹理教程。
【讨论】: