Модераторы: Rickert, Alexeis, BorisVorontsov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Отключение вертикальной синхронизации - Vsync 
V
    Опции темы
Oldshelf
Дата 21.5.2021, 09:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 22.4.2018

Репутация: нет
Всего: 4



Заметил небольшое торможение в своих программах на 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 без замедлений.

Вопрос. Можно ли избавиться от едва заметных подвисаний, не используя ресурсы на полную?
PM MAIL WWW   Вверх
Oldshelf
Дата 3.6.2021, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 22.4.2018

Репутация: нет
Всего: 4



Проблема давно известна и называется "stuttering". В случае с однопоточным приложением решается установкой wglSwapIntervalEXT(1), отключением Sleep'ов и подстройки перемещений/вращений в зависимости от FPS (вместо этого нужно указать постоянный коэффициент, зависящий от частоты обновления дисплея).
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Вы можете найти полезным что...
Alexeis
Rickert
  • Английская документация по DirectX лежит где-то здесь.
  • Английская документация по OpenGL лежит где-то там.
  • Гейм-дев у нас обсуждают где-то тут

Ждём вас! С уважением, Alexeis, Rickert.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема »


 




[ Время генерации скрипта: 0.1037 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.