在OpenGL纹理上改变亮度
我想增加OpenGL渲染中使用的纹理的亮度。比如把它做成鲜红色或白色。这是一个2D渲染环境,其中每个精灵都作为纹理映射到OpenGL多边形。 我对操纵数据知之甚少,而且我的引擎使用纹理缓存,因此更改整个曲面将影响使用纹理的所有内容。 我可以用一个“遮罩”来模拟效果,并将其覆盖,使精灵具有纯色,但这会占用内存。在OpenGL纹理上改变亮度,opengl,textures,Opengl,Textures,我想增加OpenGL渲染中使用的纹理的亮度。比如把它做成鲜红色或白色。这是一个2D渲染环境,其中每个精灵都作为纹理映射到OpenGL多边形。 我对操纵数据知之甚少,而且我的引擎使用纹理缓存,因此更改整个曲面将影响使用纹理的所有内容。 我可以用一个“遮罩”来模拟效果,并将其覆盖,使精灵具有纯色,但这会占用内存。 如果有其他解决方案,请使用GL\u MODULATE将纹理颜色乘以当前颜色。 请参阅中的纹理教程。如果您的需求负担得起,您始终可以编写一个非常简单的GLSL片段着色器来实现这一点。它实际上
如果有其他解决方案,请使用
GL\u MODULATE
将纹理颜色乘以当前颜色。请参阅中的纹理教程。如果您的需求负担得起,您始终可以编写一个非常简单的GLSL片段着色器来实现这一点。它实际上是一个单行线。
比如:
uniform sampler2d tex;
void main()
{
gl_FragColor = texture2d(tex, gl_TexCoord[0]) + gl_Color;
}
也许不是GL_MODULATE?它工作得不太好,而且它似乎是默认值,所以我已经在使用它了。当使用精灵并设置颜色(1,0,0)(全红)时,它会从精灵中删除绿色和蓝色。我想添加实际的红色,而不是删除其他两个组件。举个例子+1。您可能应该使用着色器,而不是固定的pipleline,因为它更灵活