我尝试混合纹理的几个变形,每次都使用不同的颜色,但颜色不会混合。
当我在片段着色器中只更改一行时:使用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设置的混合? 如果是的话,我该如何避免呢?