我试图在背景纹理上掩盖纹理。我有以下3个图像分别用作背景(深绿色),面具和前景(格仔浅绿色)。
这就是我在代码中的内容:
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。此外,欢迎任何达到预期结果的替代方案。