OpenGL:快速离屏渲染
-
03-07-2019 - |
题
我需要使用 OpenGL 在屏幕外渲染大量(数万)图像。
我在Windows下运行并使用QT作为框架。解决方案只能是Windows,这并不重要。
根据我使用谷歌的发现,有很多选择可以做到这一点本文 这似乎相当过时,提出了几种方法,其中相关的方法是:
- Windows 特定 - 使用
CreateDIBSection
并以某种方式将纹理绑定到它。 - 使用我的卡似乎支持的 pbuffers 扩展。
这个线程 (消息 6)建议使用 QT 特定的方法来执行此操作 QGLWidget::renderPixmap
我的问题是 - 哪一种是最快的方法?pbuffers 似乎是最安全的选择,因为它保证在硬件上执行,但使用 CreateDIB 方法是否也会通过硬件?那么QT方法呢?这似乎存在一些上下文创建问题。我当然不想为我创建的每张图像创建一个新的上下文。
有人对此有一些好的经验吗?
编辑: :回复评论——
我有一个完全不变的恒定场景,并且我从许多不同的角度渲染它。现在图像会返回给用户并由 CPU 进行处理。未来它们可能会在 GPU 上进行处理。
解决方案
使用 固定基地运营基地. 。它快速、便携并且比 pbuffers 更好用。
编辑:为了获得最佳性能,请在两个不同的 FBO 之间交替渲染:
- 渲染到A
- 渲染到B
- 从A读回并处理它
- 渲染到A
- 从 B 读回
- 转到2
通过这种方式,您可以读回一个 FBO,然后在 GPU 并行渲染到另一个 FBO 时对其进行处理。
不隶属于 StackOverflow