Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在OpenGL纹理上改变亮度_Opengl_Textures - Fatal编程技术网

在OpenGL纹理上改变亮度

在OpenGL纹理上改变亮度,opengl,textures,Opengl,Textures,我想增加OpenGL渲染中使用的纹理的亮度。比如把它做成鲜红色或白色。这是一个2D渲染环境,其中每个精灵都作为纹理映射到OpenGL多边形。 我对操纵数据知之甚少,而且我的引擎使用纹理缓存,因此更改整个曲面将影响使用纹理的所有内容。 我可以用一个“遮罩”来模拟效果,并将其覆盖,使精灵具有纯色,但这会占用内存。 如果有其他解决方案,请使用GL\u MODULATE将纹理颜色乘以当前颜色。 请参阅中的纹理教程。如果您的需求负担得起,您始终可以编写一个非常简单的GLSL片段着色器来实现这一点。它实际上

我想增加OpenGL渲染中使用的纹理的亮度。比如把它做成鲜红色或白色。这是一个2D渲染环境,其中每个精灵都作为纹理映射到OpenGL多边形。 我对操纵数据知之甚少,而且我的引擎使用纹理缓存,因此更改整个曲面将影响使用纹理的所有内容。 我可以用一个“遮罩”来模拟效果,并将其覆盖,使精灵具有纯色,但这会占用内存。
如果有其他解决方案,请使用
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,因为它更灵活