Я нахожу, что наиболее простым решением является использование GLX из-за его превосходного интерфейса высокого уровня для синхронизации и двойной буферизации. Обратите внимание, что GLX не является OpenGL, это расширение X. Вам нужен фиктивный контекст OpenGL, поскольку SwapBuffers (по какой-то нечетной причине) требует его, но это все об этом.
Если вы хотите сделать это без GLX по какой-либо причине, вы можете сделать это, создав двойные буферы через X Double Buffer Extension (DBE) и синхронизируйте их вручную для отображения с помощью расширения X Syncronization Extension. Я не сделал так себе, но вы должны быть в состоянии найти что-то по своему вкусу вызова XSyncListSystemCounters (после надлежащей инициализации!):
XSyncListSystemCounters возвращает указатель на массив системных счетчиков, поддерживаемого дисплей
Невозможно найти гораздо больше о трудном пути. Удачи.
Удалось ли вам это исправить? (Найти документацию по связанным с X технологиям сложно ...) –