glsl texture2d是否禁用混合?

时间:2015-05-16 01:55:30

标签: android opengl-es glsl

我尝试混合纹理的几个变形,每次都使用不同的颜色,但颜色不会混合。

当我在片段着色器中只更改一行时:使用vec4而不是texture2D,颜色会完美混合。

我的代码:

// set color mask to red only
glColorMask(GL_TRUE, GL_FALSE, GL_FALSE, GL_TRUE);
// draw
glDrawElements(GL_TRIANGLES, deformation_grid->mesh().triangles().size(),
        GL_UNSIGNED_SHORT, deformation_grid->mesh().triangles().data());

// set color mask to green only
glColorMask(GL_FALSE, GL_TRUE, GL_FALSE, GL_TRUE);
// draw
glDrawElements(GL_TRIANGLES, deformation_grid->mesh().triangles().size(),
        GL_UNSIGNED_SHORT, deformation_grid->mesh().triangles().data());

My Fragment着色器:

const char fragment_shader[] = "precision highp float;\n"
    "uniform sampler2D u_texture;\n"
    "varying vec2 v_uv;\n"
    "void main() {\n"
    "  vec4 texColor = vec4(texture2D(u_texture, v_uv).rgb, 0.5);\n"
    "  vec4 oneColor = vec4(1.0, 1.0, 1.0, 0.5);\n"
    "  gl_FragColor = texColor;\n"
    "}\n";

我希望永远变黄,但是当我设置

时,我实际上变黄了
gl_FragColor = oneColor
设置

和绿色

gl_FragColor = texColor

更改glColorMask()和片段着色器中的alpha值没有任何效果。

texture2D是否禁用glColorMask设置的混合? 如果是的话,我该如何避免呢?

0 个答案:

没有答案