OpenGL Wiki 在Swap Interval主题页面的最后一段中讲述了一些关于 GPU/CPU 同步的有趣内容:
如果需要 GPU<->CPU 同步,则应在缓冲区交换后使用高精度/多媒体计时器而不是 glFinish。
glFinish()
glFenceSync()
正如引用的文本所建议的那样,基于或基于方法的方法效果不佳。我相信那些高精度/多媒体计时器不是OpenGL规范的一部分。所以:
有谁知道如何使用高精度/多媒体计时器以便在垂直同步显示器上的缓冲区交换后立即调用一些 CPU 代码(也许获取时间戳)?
我的目标是使用 C++ 编写并在 Linux 上编译的解决方案,但任何库名称、代码位或直觉都会有很大帮助!