Android中的Opengles 2.0目标alpha支持

时间:2014-01-06 16:16:33

标签: android opengl-es

我试图在背景纹理上掩盖纹理。我有以下3个图像分别用作背景(深绿色),面具和前景(格仔浅绿色)。

enter image description here

enter image description here

enter image description here

这就是我在代码中的内容:

    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
    bg.draw(0, 50);
    glBlendFuncSeparate(GL_ZERO, GL_ONE, GL_SRC_COLOR, GL_ZERO);
    mask.draw(0, 50);
    glBlendFunc(GL_DST_ALPHA, GL_ONE_MINUS_DST_ALPHA);
    fg.draw(0, 50);

我正在关注这篇文章中的答案:OpenGL - mask with multiple textures

现在,我所期待的是当我绘制前景时,只有白色的蒙版部分会以前景色显示,但我看到整个前景都显示出来了。我在上面提到的帖子中的答案说我需要在设置EGL上下文时请求目标alpha。所以我也尝试了这个:

getHolder().setFormat(PixelFormat.RGBA_8888);
setEGLContextClientVersion(2);
renderer = new GLRenderer();

但这也没有任何区别。我仍然看到整个前景。我想知道如何启用目标alpha。此外,欢迎任何达到预期结果的替代方案。

0 个答案:

没有答案