如何获得屏幕刷新率?

New*_*bie 4 c++ windows opengl

这甚至可能吗?因为我注意到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.
}
Run Code Online (Sandbox Code Playgroud)

根据需要,这是我的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;
    }
}
Run Code Online (Sandbox Code Playgroud)

Nov*_*kov 7

Win32 EnumDisplaySettings功能可能是您正在寻找的.刷新率保持在lpDevMode->dmDisplayFrequency.