Sincronizando várias janelas OpenGL para vsync

Em um aplicativo do Windows, tenho várias janelas OpenGL abertas ao mesmo tempo. Idealmente, gostaria que cada um deles fosse desenhado a 60 fps, sincronizado com a atualização da tela.

Para cada contexto de renderização, estou chamandowglSwapIntervalEXT(1) para ativar o vsync. Cada janela tem seu próprio segmento de exibição, que desenha o quadro e, em seguida, chamaSwapBuffers atualizar.

Acontece que as janelas estão "lutando" umas contra as outras: parece queSwapBuffers as chamadas são sincronizadas e aguardam umas pelas outras, embora estejam em encadeamentos separados. Eu estou medindo o tempo quadro-a-quadro de cada janela e com duas janelas, isso cai para 30 fps, com 3 a 20 fps, etc.

Se eu desligar o vsync comwglSwapIntervalEXT(0), eles atualizam alegremente a 60 fps, não importa quantas janelas eu abro. Mas com uma janela aberta, isso não é tão bom quanto com o vsync ativado.

Existe alguma maneira de realizar o que eu quero com o OpenGL?

questionAnswers(2)

yourAnswerToTheQuestion