Как сегодня карты, похоже, сохраняют список команд рендеринга и скрываются только при вызове glFlush
или glFinish
, нужна ли двойная буферизация? Игра OpenGL, которую я разрабатываю на Linux (карта ATI Mobility radeon) с SDL/OpenGL, на самом деле меньше мерцает, когда SDL_GL_swapbuffers()
заменяется на glFinish()
и SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER,0)
в коде инициализации. Является ли это частным случаем моей карты или такие вещи вероятны на всех карточках?
EDIT: Я обнаружил, что причиной этого является KWin. Похоже, что, как сказал дантенволф, композиция без синхронизации была причиной. Когда я отключил композицию KWin, игра отлично работает без ЛЮБЫХ патчей исходного кода.