【问题标题】:Pixel Buffer Objects, gReadPixels and GL_UNSIGNED_INT_8_8_8_8_REV像素缓冲区对象、gReadPixels 和 GL_UNSIGNED_INT_8_8_8_8_REV
【发布时间】:2015-04-05 17:23:16
【问题描述】:

我无法在 OS X 10.10 上使用 GL_PIXEL_PACK_BUFFER 获取像素缓冲区对象来使异步 glReadPixels 工作(它工作得很好,但没有加速)。

我从 glReadPixels 中的 GL_UNSIGNED_BYTE 切换到 GL_UNSIGNED_INT_8_8_8_8_REV

glReadPixels 从 20 毫秒下降到 0.6 毫秒——换句话说,它开始真正意义上的异步工作。

我的问题是: 将 GL_UNSIGNED_INT_8_8_8_8_REV 设置为像素格式是否可以在其他 mac 系统上使用,还是我需要全部测试?

【问题讨论】:

  • 在任何情况下使用 PBO 都是异步的,格式无关紧要。完全不清楚您的问题到底是什么。
  • 将 PBO 与 glreadpixels 一起使用是异步的,但 glreadPixels 需要 20 毫秒才能返回 GL_UNSIGNED_BYTE 和 0.6 与 GL_UNSIGNED_INT_8_8_8_8_REV - 使用 PBO 时。因此,对于 GL_UNSIGNED_BYTE,我失去了将其称为异步的价值,因为在分析器中,当 GL_UNSIGNED_BYTE 在我正在使用的英特尔 iris Macbook Pro 上打开时,您可以看到驱动程序同步执行整个调用。

标签: macos opengl driver


【解决方案1】:

如果您想确信它在所有配置上都表现良好,则必须对它们进行全部测试。某个路径是慢还是快,通常取决于 GPU 供应商。不同 GPU 代的驱动程序之间的结果也可能不同,甚至可能因软件版本而异。

您在这个特定示例中测量的内容非常奇怪。 GL_UNSIGNED_BYTEGL_UNSIGNED_INT_8_8_8_8_REV 在小端机器上实际上是相同的格式。没有充分的理由为什么其中一个应该比另一个更快。在检查是否可以使用快速路径时,这很可能只是一个遗漏。

【讨论】:

猜你喜欢
  • 2010-10-19
  • 1970-01-01
  • 2014-07-13
  • 1970-01-01
  • 1970-01-01
  • 2012-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多