Синхронизация нескольких окон OpenGL с vsync

В приложении Windows у меня открыто несколько окон OpenGL одновременно. В идеале я хотел бы, чтобы каждый из них рисовал со скоростью 60 кадров в секунду, синхронизированный с обновлением экрана.

Для каждого контекста рендеринга я звонюwglSwapIntervalEXT(1) включить всинк. Каждое окно имеет свой собственный поток отображения, который рисует кадр, а затем вызываетSwapBuffers обновлять.

Оказывается, что окна "боевые" друг друга: это выглядит какSwapBuffers вызовы синхронизируются и ждут друг друга, даже если они находятся в отдельных потоках. Я измеряю время покадрового изображения каждого окна и с двумя окнами, оно падает до 30 кадров в секунду, с трех до 20 кадров в секунду и т. Д.

Если я выключу vsync сwglSwapIntervalEXT(0)Они радостно обновляются со скоростью 60 кадров в секунду независимо от того, сколько окон я открываю. Но с одним открытым окном это не так гладко, как при включенном vsync.

Есть ли способ сделать то, что я хочу с OpenGL?

Ответы на вопрос(2)

Ваш ответ на вопрос