我是FBO的新手,这个问题让我疯了好几个小时。我有兴趣找到我要求的解决方案,而不是替代方案。这是在Android上。
我正在创建一个帧缓冲区,然后我在附加到它的纹理上绘制一个圆圈。然后我将该纹理绘制到默认的帧缓冲区,就像它是常规纹理一样。一切都很棒,并按预期展示......
...除了纹理完全不透明这一事实,不仅仅是我画圆圈的地方。我希望所有其他区域都是透明的,只有纹理的圆形部分才可见。更确切地说,我想用透明像素“填充”我的纹理,然后在我们的圆圈上绘制,然后将此纹理渲染到默认的帧缓冲区,并能够看到它背后的内容。 我该怎么做?甚至可能吗?或者可能有一种方法可以保持我的纹理不透明,并告诉OpenGL不要渲染它的黑色像素?
我找到了similar question,但是经过检查的答案没有帮助。它下方的评论建议使用glClear
(我假设它引用glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT)
),但我在每glBindFramebuffer
之后都这样做,但它仍然没有做任何事情。我还阅读了有关启用Alpha混合的内容,因此我在每glEnable(GL_BLEND)
后执行了glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)
和glBindFramebuffer
,并且我的纹理保持不透明。
另一个答案表明它依赖于平台,因此我正在寻找Android解决方案。