Android glsl texture2d是否禁用混合?
我尝试混合一个纹理的几个变形,每次都是不同的颜色,但颜色没有混合 当我在片段着色器中只更改一行时:使用vec4而不是texture2D,颜色会完全混合 我的代码:Android glsl texture2d是否禁用混合?,android,opengl-es,glsl,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(),
// 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());
我的片段着色器:
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设置的混合?
如果是这样,我怎么能避免呢?不应该。但考虑到你目前告诉我们的情况,你所看到的毫无意义。如果gl_FragColor=单色;显示黄色,则其他设置不正确。我希望你在50%的透明度下得到白色,或者,考虑到你的彩色面具,在50%的透明度下得到红色。似乎还有其他一些状态集,但是如果没有看到更多的代码,就不可能知道是什么。纹理的内容是什么?除非纹理中的R和G分量的值相同,否则不一定会出现黄色。此外,您还谈到了混合。您是否启用了混合?你使用的混合函数是什么?我使用glEnableGL_混合;和glBlendFuncGL_SRC_ALPHA,GL_ONE_减去_SRC_ALPHA;以启用混合。我认为当我使用单色时,黄色是有意义的,因为红色+绿色应该创造黄色。我使用棋盘格图案作为纹理,所以当我使用texColor时,我希望白色方块中也会出现黄色。