Не удается включить vsync в Cygwin / X - PullRequest
0 голосов
/ 31 мая 2018

Я пытаюсь скомпилировать простую игру с использованием SDL2 и OpenGL под Cygwin.Когда я запустил программу, я обнаружил, что использование графического процессора необычайно велико.Затем я обнаружил, что VSync не был включен для программы.В частности, SDL_GL_SetSwapInterval(1) не вернул ни 0 (успех), ни -1 (сбой), но недокументированное значение 5. SDL_GetError() возвращает glXSwapIntervalMESA failed.Любая идея о том, как это исправить?

Обновление: я попытался вызвать glXSwapIntervalMESA напрямую и обнаружил, что он вернул GLX_BAD_CONTEXT.Теперь кажется, что единственный способ форсировать VSync - через настройки драйвера дисплея.

1 Ответ

0 голосов
/ 01 июня 2018

Cygwin / X заставляет вас работать через сервер X11, работающий поверх Windows GDI.Возможности этого сервера X11 очень ограничены, и поддерживаются не все дополнительные функции в книге.

Если вам не нужны другие компоненты X11, кроме GLX, тогда отбросьте их и получите прямой доступ к графической системе.То же самое касается функций Cygwin и POSIX.

Т.е. используйте MinGW для компиляции вашей программы без Cygwin и сборку SDL-2, которая использует собственные функции ОС для создания и управления контекстом OpenGL.

...