linux 如何在Xlib应用程序中等待VSYNC?

x33g5p2x  于 2023-03-22  发布在  Linux
关注(0)|答案(1)|浏览(164)

我正在使用XWindow Drawable,Pixmap和XRender在屏幕上绘制一些东西。我可以看到有时会有 Flink 。有没有办法等待VBLANK?我已经谷歌了很多,感觉就像在森林里找硬币一样。
没有涉及OpenGL。它是Linux(Ubuntu)。我可以使用(nano)Sleep(),但需要知道什么时候绘图的时间已经到来了一些如何。

htzpubme

htzpubme1#

我发现到目前为止最简单的解决方案是使用GLX,因为它具有出色的同步和双缓冲高级接口。请注意GLX不是OpenGL,它是X扩展。您需要一个虚拟的OpenGL上下文,因为SwapBuffers(出于某种奇怪的原因)需要它,但仅此而已。
如果你不想使用GLX,你可以通过X Double Buffer Extension(DBE)创建双缓冲区,并使用X Syncronization Extension手动同步到显示。你可以找到一些有用的东西,调用XSyncListSystemCounters,尽管它还没有通过测试确认:
XSyncListSystemCounters返回指向显示器支持的系统计数器数组的指针。

相关问题