是否有任何方法将纹理缓冲对象(ARB_texture_buffer_object)附加到framebuffer (EXT_framebuffer_object),以便我可以直接渲染到纹理缓冲对象?
我需要这个多样本帧缓冲区(颜色缓冲区,深度缓冲区和模板缓冲区)的精确,按位复制,并将此副本驻留在主内存而不是VRAM中。
更新:问题是我不能在多采样帧缓冲区上直接调用glReadPixels来复制其内容。相反,我必须将多采样帧缓冲区blit到中间帧缓冲区,然后调用glReadPixels。在这个过程中,多个样本被平均并写入中间缓冲区。现在,当然,如果我用glWritePixels来恢复这个缓冲区,精度会有损失。
我意识到我可以使用多样本纹理作为帧缓冲对象的后备存储,但这种纹理将驻留在VRAM中,并且似乎没有办法将其复制到主存储器而不会丢失相同的精度。具体来说,我担心的是与多采样深度缓冲区附件相关的精度损失,而不是颜色缓冲区。
是否有另一种方法来制作一个精确的副本(并恢复此副本)的多采样帧缓冲在OpenGL?
TL;DR:如何将多采样帧缓冲区(特别是深度缓冲区)的确切内容复制到主存并在之后恢复这些内容,而不损失精度。
OpenGL不允许绑定缓冲纹理作为渲染目标。然而,我不知道是什么阻止你做"一个精确的,多样本帧缓冲区的位拷贝"。你认为缓冲纹理可以解决的问题是什么?
如何将多采样帧缓冲区(特别是深度缓冲区)的确切内容复制到主存并稍后恢复这些内容,而不损失精度。
。
并且您不需要将图像的内容复制到主存储器中以便以后保存和恢复它。如果需要保留多样本图像的内容,只需将其blits到另一个多样本图像。你可以把它复制回来恢复它。或者更好的是,渲染到一个多样本纹理,你不会擦除,直到你完成它。这样就不需要复制了