Vsyncing в оконном режиме игры OpenGL на 20 FPS, пока окно GDI не станет верхним

Моя однопоточная игра Opengl с двойной буферизацией работает на двух мониторах, используя одну комбинацию HWND, HDC и HGLRC. Таким образом, каждый буфер кадра имеет размер 2560 x 1024.

Мой компьютер это:

Процессор Intel Core 2 Quad с тактовой частотой 3,00 ГГц
Видеокарта ATI Radeon HD 3400 с тактовой частотой 512 МБ, ЦАП, 400 МГц
Оба монитора настроены на 60 Гц и (1280 x 1024) разрешение.

Я вижу, что моя игра с vsyncing OFF работает на скорости около 36 кадров в секунду. Когда vsyncing включен, игра синхронизируется со скоростью 20 FPS, пока приложение GDI, такое как диспетчер задач, не фокусируется и не рендерится поверх него. Затем мы видим, что частота кадров игры возрастает до 30 кадров в секунду, в то время как менеджер задач находится в фокусе. FRAPS подтверждает мою профилированную частоту кадров как точную.

20FPS — ожидаемая скорость Vsync? Как у меня сложилось впечатление, что действительные значения для 60Гц монитора были 60,30,15,10 …?

Мне также удалось запустить демонстрацию фоновой текстуры для запуска с теми же начальными настройками рендеринга, что и в моей игре, и я вижу 72FPS с отключенным Vsync, а Vsync ON синхронизируется с 30FPS. Что случилось с синхронизацией до 60FPS?

Это почти как если бы я пропускал прерывание или таймер vsync, если нет окна GDI.

К вашему сведению, я использую QueryPerformanceCounter, чтобы получить таймер высокого разрешения для выполнения всех вычислений FPS.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …