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

根据我使用谷歌的发现,有很多选择可以做到这一点本文 这似乎相当过时,提出了几种方法,其中相关的方法是:

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

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

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


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

有帮助吗?

解决方案

使用 固定基地运营基地. 。它快速、便携并且比 pbuffers 更好用。

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top