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?