将backbuffer直接复制到视频内存

时间:2014-12-13 15:41:48

标签: c++ c windows opengl directx

有没有办法直接将后备缓冲区数据复制到视频内存中?我的意思是不使用系统内存。到目前为止我找到的所有方法(如thisthis)都会将后备缓冲区内容复制到系统内存中,这需要花费大量时间。

我的任务是在视频内存中创建一个曲面或纹理,并告诉图形适配器直接将后备缓冲区复制到那里,而不使用总线。感谢

1 个答案:

答案 0 :(得分:1)

顺便说一句,后台缓冲区已经在视频内存中了 - 只是不一定完成。您的性能问题可能实际上是由于在等待渲染完成时强制管道停滞;你的描述很难说。

如果您绘制到FBO图像附件中,您可以在不造成停顿的情况下执行此操作,但是您将绘制到单独的缓冲区而不是窗口系统的交换链(后台缓冲区)。因此,当您交换缓冲区时,结果将不会显示在屏幕上,您必须手动调用glBlitFramebuffer (...)或使用附加到FBO的图像作为纹理绘制纹理四边形。