在计算机监视器上显示图像涉及到图形API的使用,该API分发一系列异步调用.在某个特定的时间,把通缉的东西放到电脑屏幕上。
但是,如果您感兴趣的是,在完全绘制所需的映像(用户可以看到)时,了解确切的 CPU时间会怎样呢?
我真的需要拿一个CPU时间戳,当所有的东西都显示出来,把这一点和我所做的其他测量联系起来。
在不考虑图形堆栈的异步行为的情况下,许多事情都可以获得对抖动的图形调用的长度:
我针对Linux上的解决方案,但对任何其他操作系统都是开放的。我已经研究了X视频分机 for X.org服务器和OpenGL API的部分内容,但是我还没有找到一个有效的解决方案。
我只希望解决方案不涉及入侵视频驱动程序/硬件!
注意:我不能在所需的硬件上使用最近的Nvidia G同步程序.虽然这项技术可以消除一些无法预测的抖动,但我认为它并不能完全解决这个问题。
OpenGL维基建议如下:“如果需要GPU<->CPU同步,那么在缓冲区交换之后,应该使用高精度/多媒体计时器而不是glFinish。”
有人知道在GPU队列中完成swapBuffer调用后如何正确地获取这样一个高精度/多媒体计时器值吗?
发布于 2013-11-04 19:14:52
最近的OpenGL提供同步/栅栏对象。您可以将同步对象放置在OpenGL命令流中,然后等待它们被传递。请参阅对象
https://stackoverflow.com/questions/19772758
复制相似问题