Заметил небольшое торможение в своих программах на OpenGL. Проявляется на современной видеокарте NVidia. Причём сцена строится вроде бы нормально, небольшой фриз и потом снова нормальный рендеринг. Кажется, дело в вертикальной синхронизации. При любых Sleep'ах между SwapBuffers даётся стабильно 60 FPS. Пробовал подключать заголовочный файл "wglext.h" и использовать этот код:
Код | // https://www.gamedev.ru/tip/?id=85 typedef BOOL (APIENTRY * wglSwapIntervalEXT_Func)(int); wglSwapIntervalEXT_Func wglSwapIntervalEXT = wglSwapIntervalEXT_Func(wglGetProcAddress("wglSwapIntervalEXT")); if(wglSwapIntervalEXT) wglSwapIntervalEXT(0); // 1 - чтобы включить
|
Но эффекта не получил. Причём пример работает, при установке wglSwapIntervalEXT(2) - частота кадров снижается вдвое, но выше 60 не поднимается, даже со Sleep (1) или usleep (1)... Отключил Sleep вообще и видеокарта выдала 800-1000 FPS без замедлений.
Вопрос. Можно ли избавиться от едва заметных подвисаний, не используя ресурсы на полную? |