我发现到目前为止,最简单的解决方案是使用GLX,因为它具有出色的同步和双缓冲高级接口。请注意,GLX不是OpenGL,它是X扩展名。您需要一个虚拟的OpenGL上下文,因为SwapBuffers(出于某种奇怪的原因)需要它,但仅此而已。
如果出于任何原因要在没有GLX的情况下执行此操作,可以通过X Double Buffer Extension(DBE)创建双缓冲区并使用X Syncronization Extension手动同步以使其显示。我自己还没有这样做,但是您应该可以按自己的喜好调用XSyncListSystemCounters(在正确初始化之后!):
XSyncListSystemCounters返回一个指向显示器支持的系统计数器数组的指针
但是,我很难找到更多有关艰难道路的信息。祝好运。