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?