Синхронизация нескольких окон OpenGL с vsync
В приложении Windows у меня открыто несколько окон OpenGL одновременно. В идеале я хотел бы, чтобы каждый из них рисовал со скоростью 60 кадров в секунду, синхронизированный с обновлением экрана.
Для каждого контекста рендеринга я звонюwglSwapIntervalEXT(1)
включить всинк. Каждое окно имеет свой собственный поток отображения, который рисует кадр, а затем вызываетSwapBuffers
обновлять.
Оказывается, что окна "боевые" друг друга: это выглядит какSwapBuffers
вызовы синхронизируются и ждут друг друга, даже если они находятся в отдельных потоках. Я измеряю время покадрового изображения каждого окна и с двумя окнами, оно падает до 30 кадров в секунду, с трех до 20 кадров в секунду и т. Д.
Если я выключу vsync сwglSwapIntervalEXT(0)
Они радостно обновляются со скоростью 60 кадров в секунду независимо от того, сколько окон я открываю. Но с одним открытым окном это не так гладко, как при включенном vsync.
Есть ли способ сделать то, что я хочу с OpenGL?