[英]Transparent texture framebuffer (OpenGL ES 2)
我是FBO的新手,这个问题让我疯了好几个小时。 我有兴趣找到我要求的解决方案,而不是替代方案。 这是在Android上。
我正在创建一个帧缓冲区,然后我在附加到它的纹理上绘制一个圆圈。 然后我将该纹理绘制到默认的帧缓冲区,就像它是常规纹理一样。 一切都很棒,并按预期展示......
......除了纹理完全不透明这一事实,不仅仅是我画圆圈的地方。 我希望所有其他区域都是透明的,只有纹理的圆形部分才可见。 更确切地说,我想用透明像素“填充”我的纹理,然后在我们的圆圈上绘制,然后将此纹理渲染到默认的帧缓冲区,并能够看到它背后的内容。 我怎样才能做到这一点? 它甚至可能吗? 或者也许有一种方法可以保持我的纹理不透明,并告诉OpenGL不要渲染,比如黑色像素?
我发现了一个类似的问题 ,但是经过检查的答案没有帮助。 下面的评论建议使用glClear
(我假设它指的是glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT)
),但是我在每个glBindFramebuffer
之后都这样glBindFramebuffer
,它仍然没有做任何事情。 我还阅读了关于启用alpha混合的内容,因此我在每个glBindFramebuffer
之后都glBindFramebuffer
了glEnable(GL_BLEND)
和glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)
,并且我的纹理保持不透明。
另一个答案表明它依赖于平台,因此我正在寻找Android解决方案。
尝试glColorMask(TRUE,TRUE,TRUE,TRUE); 在glClearColor
和glClear
之前。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.