OpenGL:快速离屏渲染

时间:2008-10-18 02:39:19

标签: performance opengl 3d rendering off-screen

我需要使用OpenGL在屏幕外渲染相当多的(数万个)图像 我在Windows下运行并使用QT作为框架。解决方案只能是Windows,它并不重要。

从我发现的使用谷歌的方法来看,有很多选择 似乎相当过时的This article提出了一些方法,其中相关的方法是:

  • Windows特定 - 使用CreateDIBSection并以某种方式将纹理绑定到它。
  • 使用我的卡上似乎支持的pbuffers扩展程序。

This thread(消息6)建议使用QGLWidget::renderPixmap

以QT方式执行此操作

我的问题是 - 哪一个是最快的方式? pbuffers似乎是最安全的赌注,因为它保证在硬件上执行但不使用CreateDIB方法也通过硬件? QT方法怎么样?这个似乎存在一些上下文创建问题。当然,我不想为我创建的每一张图片创建一个新的上下文 有没有人对此有一些很好的经验?


编辑:回答评论 -
我有一个不变的场景,我从许多不同的角度渲染它。现在,图像将返回给用户,并由CPU处理。可能在未来它们将在GPU上进行处理。

1 个答案:

答案 0 :(得分:9)

使用FBO。它比pbuffers更快,更便携,更好用。

编辑:为了获得最佳性能,请在两个不同的FBO之间进行交替渲染:

  1. 渲染为A
  2. 渲染到B
  3. 从A回读并处理
  4. 渲染为A
  5. 从B
  6. 回读
  7. 转到2
  8. 通过这种方式,您可以回读一个FBO,然后在GPU并行渲染到另一个FBO时对其进行处理。