Sincronizando múltiples ventanas de OpenGL con vsync

En una aplicación de Windows, tengo varias ventanas OpenGL abiertas al mismo tiempo. Lo ideal sería que cada uno de estos dibujara a 60 fps, sincronizados con la actualización de la pantalla.

Para cada contexto de render, estoy llamandowglSwapIntervalEXT(1) para activar vsync. Cada ventana tiene su propio hilo de visualización, que dibuja el marco y luego llamaSwapBuffers actualizar.

Resulta que las ventanas están "luchando" entre sí: se parece a laSwapBuffers Las llamadas están sincronizadas y se esperan unas a otras, aunque estén en hilos separados. Estoy midiendo el tiempo de fotograma a fotograma de cada ventana y con dos ventanas, esto se reduce a 30 fps, con 3 a 20 fps, etc.

Si apago vsync conwglSwapIntervalEXT(0), se actualizan felizmente a 60 fps sin importar cuántas ventanas abro. Pero con una ventana abierta, esto no es tan suave como con vsync activado.

¿Hay alguna manera de lograr lo que quiero con OpenGL?

Respuestas a la pregunta(2)

Su respuesta a la pregunta