Synchronizowanie wielu okien OpenGL z vsync

W aplikacji Windows mam jednocześnie otwarte wiele okien OpenGL. Idealnie chciałbym, aby każdy z nich rysował z prędkością 60 klatek na sekundę, zsynchronizowany z odświeżaniem ekranu.

Dla każdego kontekstu renderowania dzwonięwglSwapIntervalEXT(1) włączyć vsync. Każde okno ma własny wątek wyświetlania, który rysuje ramkę, a następnie wywołujeSwapBuffers aktualizować.

Okazuje się, że okna „walczą” ze sobą: wygląda jakSwapBuffers połączenia są synchronizowane i czekają na siebie, nawet jeśli są w osobnych wątkach. Zmierzam czas klatek na klatkę każdego okna iz dwoma oknami spada to do 30 fps, z trzema do 20 fps itd.

Jeśli wyłączę vsync zwglSwapIntervalEXT(0), radośnie odświeżają się z prędkością 60 klatek na sekundę, niezależnie od tego, ile okien otwieram. Ale z jednym otwartym oknem nie jest to tak płynne jak przy włączonym vsync.

Czy jest jakiś sposób, aby osiągnąć to, czego chcę z OpenGL?

questionAnswers(2)

yourAnswerToTheQuestion