像素缓冲区对象、gReadPixels 和 GL_UNSIGNED_INT_8_8_8_8_REV

Pixel Buffer Objects, gReadPixels and GL_UNSIGNED_INT_8_8_8_8_REV

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

我从 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 系统,还是我需要对它们全部进行测试?

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

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