c++ - 如何获取屏幕刷新率?

标签 c++ windows opengl

这可能吗?因为我注意到垂直同步在我的笔记本电脑上根本不起作用,所以我正在“手动”构建 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.
}

根据需要,这是我的垂直同步启用代码 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/

相关文章:

python - 使用 python 的 OpenGL 屏幕截图

c++ - gcov 报告仅 header 类的错误结果

c++ - cin.clear() 和 cin.ignore() 之间是否需要顺序?

c++ - Arduino 没有读取适当数量的字节

java - CMD:如何将 java -version 的结果写入/打印到某个文件

language-agnostic - CPU 或 GPU 绑定(bind)?分析 OpenGL 应用程序

C++ 使用 std::sort 为非常小的 std::vector 抛出 std::bad_alloc 异常

c++ - 如何开始在 Win32 上使用 Winforms 风格的应用程序?

c++ - 检测模拟键盘/鼠标输入

objective-c - 翻转 OpenGL 纹理