【发布时间】:2011-09-21 01:34:20
【问题描述】:
有什么方法可以将纹理缓冲对象(ARB_texture_buffer_object)附加到帧缓冲(EXT_framebuffer_object),这样我就可以直接渲染到纹理缓冲对象中了吗?
我需要它来制作多采样帧缓冲区(颜色缓冲区、深度缓冲区和模板缓冲区)的精确按位副本,并将此副本驻留在主内存中而不是 VRAM 中。
更新: 问题是我不能直接在多采样帧缓冲区上调用 glReadPixels 来复制其内容。相反,我必须将多采样帧缓冲区传输到中间帧缓冲区,然后在其上调用 glReadPixels。在此过程中,多个样本被平均并写入中间缓冲区。如果我用 glWritePixels 恢复这个缓冲区,现在当然会损失精度。
我意识到我可以使用多样本纹理作为帧缓冲区对象的后备存储,但此纹理将驻留在 VRAM 中,并且似乎无法将其复制到主内存而不会损失同样的精度。具体来说,我担心与多采样深度缓冲区附件相关的精度损失,而不是颜色缓冲区。
是否有另一种方法可以在 OpenGL 中制作多采样帧缓冲区的精确副本(并恢复该副本)?
TL;DR:如何将多样本帧缓冲区(特别是深度缓冲区)的确切内容复制到主内存并稍后恢复这些内容,而不会损失精度。
【问题讨论】: