将具有 alpha 的位图图层渲染到 FBO
Posted
技术标签:
【中文标题】将具有 alpha 的位图图层渲染到 FBO【英文标题】:Rendering layers of bitmaps with alpha to FBO 【发布时间】:2016-11-08 18:27:26 【问题描述】:我需要绘制几个对 FBO 半透明的位图“层”(供以后回读)。
我目前的方法是创建一个 FBO,为其附加纹理并使用 glTexSubImage2D 将位图“绘制”到 FBO,但是这不起作用,因为 glTexSubImage2D 不绘制/混合像素,而只是覆盖纹理中当前的像素。
最好的方法是什么?
【问题讨论】:
【参考方案1】: 您创建了一个带有干净纹理 R 的 FBO,以保存最终结果。 对于每个位图,您: 将位图上传到纹理 T(T 和 R 是不同的纹理)。 在启用并正确设置GL_BLEND
的情况下将带有 T 纹理的四边形渲染到 FBO。
最终结果是 R 保存了您的混合位图。您现在可以将其读回或用于其他纹理操作。
【讨论】:
谢谢,这行得通。最后一个问题:我的图层可能有不同的大小(因此 glTextSubImage2D),这意味着 T 中可能有前一层的剩余部分。确保在每个图层绘制之间有一个空纹理的最佳方法是什么? 如果纹理大小发生变化:要么每次创建一个新纹理,要么调整四边形和纹理坐标,以便它们仅从 FBO/纹理的相关部分绘制和采样。跨度>以上是关于将具有 alpha 的位图图层渲染到 FBO的主要内容,如果未能解决你的问题,请参考以下文章