1

这是片段着色器代码的片段(我需要在着色器中进行混合):

float a = texture2D(tMask, texCoords).x; // opacity of current pixel from mask texture.
if ( a == 0.0)
    discard;
else {
    vec4 dst_clr = texture2D(tBkgText, posCoords); // color of current pixel in current framebuffer.
    vec4 src_clr = vec4(vColor.rgb, sOpacity);
    gl_FragColor = src_clr * a + dst_clr * (1.0 - a);
}

以下是混合函数和方程:

glBlendFunc(GL_ONE, GL_ZERO);
glBlendEquation(GL_FUNC_ADD);

以下是设备(左)和模拟器(右)上的结果:

在设备上 在模拟器上

如何使它像在模拟器上一样工作?

更新:

我已删除discard

float a = texture2D(tMask, texCoords).x; // opacity of current pixel from mask texture.
vec4 dst_clr = texture2D(tBkgText, posCoords); // color of current pixel in current framebuffer.
vec4 src_clr = vec4(vColor.rgb, sOpacity);
gl_FragColor = src_clr * a + dst_clr * (1.0 - a);

现在设备上的结果如下所示:

在没有的设备上

4

1 回答 1

0

我通过添加glFlushafter解决了这个问题glDrawArrays。问题是在其关联的帧缓冲区中进行绘制时纹理没有更新。

于 2013-02-07T09:34:23.230 回答