我正在使用XWindow Drawable,Pixmap和XRender在屏幕上绘制一些东西。我可以看到有时会出现闪烁。有没有办法等待VBLANK?我已经在Google上搜索了很多,感觉就像在森林里寻找一枚硬币。

没有涉及OpenGL。它是Linux(Ubuntu)。
我可以使用(nano)sleep(),但是需要知道什么时候该画画了。

最佳答案

我发现到目前为止,最简单的解决方案是使用GLX,因为它具有出色的高级同步和双缓冲接口(interface)。请注意,GLX不是OpenGL,它是X扩展名。您需要一个虚拟的OpenGL上下文,因为SwapBuffers(出于某种奇怪的原因)需要它,但仅此而已。

如果出于任何原因要在没有GLX的情况下执行此操作,可以通过X Double Buffer Extension(DBE)创建双缓冲区并使用X Syncronization Extension手动同步以使其显示。我本人还没有这样做,但是您应该可以按自己的喜好调用XSyncListSystemCounters(在正确的初始化之后!):



但是,我很难找到更多有关艰难道路的信息。祝你好运。

10-06 02:45