繁体   English   中英

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

[英]Transparent texture framebuffer (OpenGL ES 2)

我是FBO的新手,这个问题让我疯了好几个小时。 我有兴趣找到我要求的解决方案,而不是替代方案。 这是在Android上。

我正在创建一个帧缓冲区,然后我在附加到它的纹理上绘制一个圆圈。 然后我将该纹理绘制到默认的帧缓冲区,就像它是常规纹理一样。 一切都很棒,并按预期展示......

......除了纹理完全不透明这一事实,不仅仅是我画圆圈的地方。 我希望所有其他区域都是透明的,只有纹理的圆形部分才可见。 更确切地说,我想用透明像素“填充”我的纹理,然后在我们的圆圈上绘制,然后将此纹理渲染到默认的帧缓冲区,并能够看到它背后的内容。 我怎样才能做到这一点? 它甚至可能吗? 或者也许有一种方法可以保持我的纹理不透明,并告诉OpenGL不要渲染,比如黑色像素?

我发现了一个类似的问题 ,但是经过检查的答案没有帮助。 下面的评论建议使用glClear (我假设它指的是glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT) ),但是我在每个glBindFramebuffer之后都这样glBindFramebuffer ,它仍然没有做任何事情。 我还阅读了关于启用alpha混合的内容,因此我在每个glBindFramebuffer之后都glBindFramebufferglEnable(GL_BLEND)glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) ,并且我的纹理保持不透明。

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

尝试glColorMask(TRUE,TRUE,TRUE,TRUE); glClearColorglClear之前。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM