5

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

从我使用谷歌发现的情况来看,有很多选项可以做到这 一点这篇文章似乎相当过时,提出了一些方法,其中相关的方法是:

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

该线程(消息 6)建议使用 QT 特定的方式来执行此操作QGLWidget::renderPixmap

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


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

4

1 回答 1

8

使用FBO。它比 pbuffers 快速、便携并且更好用。

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

  1. 渲染到 A
  2. 渲染到 B
  3. 从 A 读回并处理它
  4. 渲染到 A
  5. 从 B 回读
  6. 转到 2

这样,您可以读回一个 FBO,然后在 GPU 并行渲染到另一个 FBO 时对其进行处理。

于 2008-10-18T03:30:22.673 回答