我对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的解决方案。