将纹理复制到屏幕缓冲区而不绘制四边形(opengl)

13 opengl

是否有快速功能将纹理blit到屏幕缓冲区(不使用扩展)?我需要反向的glCopyTexImage2D().

这样的功能存在吗?

Nic*_*las 14

你最接近的是glBlitFramebuffer.顾名思义,它适用于帧缓冲区.是的,framebuffers可以包含纹理,但我不会尝试使用它作为使用四边形绘制纹理的替代品.通过使用四边形而不是blitting framebuffers,您可以获得更好的绘制大量纹理的性能.

此外,绘制四边形绘制纹理的快速功能.

  • 绘制四边形,即使考虑状态变化使其全屏/无深度测试/等,也非常快.最慢的部分是缓冲区到纹理的复制,但是绘制可以足够快,以至于使用缓冲区的乒乓方法可以更快.向后缓冲器或从后缓冲器进行模仿,或者前缓冲器更糟糕,总是*非常慢. (5认同)
  • 在我的系统(GTX 660)上,从纹理(包裹在帧缓冲区中)到主帧缓冲区执行glBlitFramebuffer比绘制四边形慢大约20微秒.迷人. (5认同)
  • 以上适用于从FBO复制到FBO.但是当我从FBO复制到后备缓冲区时,全屏四边形会快一点.虽然使用blitting,但从较高分辨率的缓冲区复制到较低分辨率的缓冲区要慢得多. (2认同)