透明纹理帧缓冲(OpenGL ES 2)

3

我对FBOs一窍不通,这个问题困扰了我好几个小时。 我想找到一个解决方案而不是替代方案。 这是在Android上。

我创建了一个帧缓冲区,然后将一个圆形绘制到附加到其中的纹理上。 然后,我像处理常规纹理一样将该纹理绘制到默认帧缓冲区中。 一切都很好,显示如预期...

除了这个纹理完全是不透明的,不仅限于我绘制圆形的位置。 我希望所有其他区域都是透明的,只有纹理的圆形部分可见。 更确切地说,我想用透明像素'填充'我的纹理,然后在它们上面画圆形,然后将这个纹理渲染到默认帧缓冲区,并能够看到其背后的内容。我该怎么做?这是可能的吗?或者说有没有办法让我的纹理保持不透明并告诉OpenGL不要渲染它的黑色像素?

我发现了一个类似的问题,但是被采纳的答案没有帮助。 在它下面的评论建议使用glClear(我认为它是指glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT)),但是我在每个glBindFramebuffer之后都这样做了,但仍然无济于事。 我还阅读了关于启用alpha混合的内容,因此在每个glBindFramebuffer之后,我执行了glEnable(GL_BLEND)glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA),但我的纹理仍然不透明。

另一个答案表明它是依赖于平台的,因此我正在寻找Android的解决方案。


有完全相同的问题,有人可以帮忙吗? @async 自你发布这个问题以来已经很长时间了。你解决了吗? - Andrii Bas
1个回答

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接