这有可能吗?由于香港专业教育学院注意到v-sync根本无法在我的笔记本电脑上工作,因此我正在“手动”构建FPS限制器,现在我想使用用户已设置在其屏幕上的FPS限制。

编辑:我的意思是监视器的hz速率。

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;
    }
}

最佳答案

The Win32 EnumDisplaySettings function可能就是您想要的。刷新率保存在lpDevMode->dmDisplayFrequency中。

关于c++ - 如何获得屏幕刷新率?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4110731/

10-11 00:01