Как получить частоту обновления экрана? - PullRequest
4 голосов
/ 06 ноября 2010

Возможно ли это вообще?Поскольку я заметил, что v-sync вообще не работает на моем ноутбуке, поэтому я создаю ограничитель FPS «вручную», и теперь я хотел бы использовать ограничение FPS, установленное пользователем для его экрана.

Редактировать: Я имею в виду частоту Гц монитора.

Edit3: Вот код, который я получил (я думаю ... что-то там не так?):

DEVMODE lpDevMode;
memset(&lpDevMode, 0, sizeof(DEVMODE));
lpDevMode.dmSize = sizeof(DEVMODE);
lpDevMode.dmDriverExtra = 0;

if(EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &lpDevMode) == 0){
    framerate_limit = 60; // default value if cannot retrieve from user settings.
}

По требованию, вот мой код активации v-sync, который попросил jay.lee:

PFNWGLSWAPINTERVALEXTPROC wglSwapIntervalEXT = NULL; // global

...

wglSwapIntervalEXT = (PFNWGLSWAPINTERVALEXTPROC) wglGetProcAddress("wglSwapIntervalEXT");

v_sync_enabled = 0;
if(wglSwapIntervalEXT != NULL){
    if(wglSwapIntervalEXT(1) != FALSE){
        v_sync_enabled = 1;
    }
}

1 Ответ

7 голосов
/ 06 ноября 2010

Функция Win32 EnumDisplaySettings может быть тем, что вы ищете. Частота обновления сохраняется в lpDevMode->dmDisplayFrequency.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...