【问题标题】:opengl offscreen rendering in linux is slowlinux中的opengl离屏渲染很慢
【发布时间】:2014-01-12 22:40:08
【问题描述】:

我的 opengl 应用程序以大约 110 fps 的速度运行。我添加离屏渲染的那一刻,它会减慢到 15 fps。我正在使用帧缓冲区对象和 glReadPixels 进行屏幕外渲染。我在网上搜索过,发现 GPU 内存到 CPU 内存的数据传输很慢,反之则很快。 我有 ATI Mobility Radeon™ X2300 和 128MB 显存。
所以我的问题是
1) 有没有办法提高 VRAM 到 CPU ram 的数据传输速度?
2) 市场上是否有任何 GPU 经过优化以提高读取速度?

【问题讨论】:

  • 不可以。您可以使用像素缓冲区对象并重新构建您的软件,以便在帧开始时启动像素传输操作,然后在 GPU 执行一些有用的操作后使用内存工作。您无法提高内存传输的速度,只能通过更智能地执行传输来最大限度地减少对图形管道其余部分的干扰。正如我对你昨天遇到的类似问题的回答一样,这归结为 CPU / GPU 同步;那是瓶颈,而不是总线传输率。
  • 安东说什么+搜索PBO乒乓和DMA异步传输。

标签: linux opengl rendering gpu render


【解决方案1】:

问题不在于传输速度,而在于 CPU 和 GPU 之间的序列化。当您以这种方式调用 glReadPixels 时,CPU 将停止并等待 GPU 完成所有渲染,正如您已经注意到的那样,这非常低效。

解决方案是使用 PBO。您可以拥有 N 个 PBO,并在每一帧上将 PBO X(其中 0

【讨论】:

    猜你喜欢
    • 2018-06-11
    • 2011-04-20
    • 1970-01-01
    • 2010-09-17
    • 1970-01-01
    • 1970-01-01
    • 2014-07-28
    • 1970-01-01
    相关资源
    最近更新 更多