在片段着色器中仅更改一个颜色通道

时间:2015-11-08 18:38:08

标签: opengl glsl

我想知道如何只更改一个颜色通道,并将另外两个颜色通道保持为初始值。

#version 410
layout(location = 0) out vec3 color_out;
precision highp float;


void main()
{
        float z = 0.3f;
        color_out = vec3(z, my actual value , my actual value)
}

如何检索实际值或只更改一个频道(红色频道)?

我尝试使用此代码进行绘制

glColorMask(true,true ,true, true);
glDrawArrays(GL_TRIANGLES, 0, totalconnectedtriangles_);
glColorMask(true,false,false,false);

此解决方案有效,但在移动窗口时会创建非常奇怪的工件。片段着色器是在glDrawArrays(在我的第二个颜色掩码之后)还是在glDrawArrays之后发生的?

1 个答案:

答案 0 :(得分:4)

glColorMask允许您为每个频道选择为您的片段更新的内容。所以你可以决定只做R来更新 ACTION_VIEW