2016-11-08 64 views
1

我需要为FBO绘制几个“半透明”的图层(用于以后的回读)。使用Alpha到FBO渲染图层的位图

我目前的做法是创建一个FBO,附加一个纹理,并使用glTexSubImage2D来“绘制”位图到FBO,但是,这不起作用,因为glTexSubImage2D不绘制/混合像素,但只是覆盖纹理中当前的像素。

这样做的最好方法是什么?

回答

2
  • 您创建了一个FBO,并附有干净的纹理R以保留最终结果。
  • 对于每一个位图你的:
    • 上传的位图纹理T(T和和R 不同纹理)。
    • 将带有T的四边形纹理渲染到FBO中,并启用并正确设置了GL_BLEND

最终的结果是是R握着你的混合位图。您现在可以将其读回或用于其他纹理操作。

+0

谢谢,这个工程。最后一个问题:我的图层可能具有不同的大小(因此glTextSubImage2D),这意味着在T中可能会有前一层的剩余物。确保每层图层之间有空的纹理的最佳方法是什么? – monoceres

+0

如果纹理大小变化:或者每次创建一个新的纹理,或者调整四边形和纹理坐标,以便它们仅绘制和从FBO /纹理的相关部分进行取样/取样。 – ybungalobill

+0

解决了它:) – monoceres