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

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

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

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

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

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

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

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

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

0 ответов

Другие вопросы по тегам