我知道在 Windows 上获得屏幕刷新率的两种方法。第一个是简单的EnumDisplaySettings
函数,它填充一个包含以 fps 为单位的舍入屏幕刷新率值的结构。第二个是使用 DirectX,在初始化期间,您可以选择通过将分子和分母相除来检索刷新率。
根据我自己的经验,第一种方法是不够的。我的笔记本电脑显示器无法达到 60 的精确帧速率 - 相反,它有多种设置,以 fps 为单位分别在 59.9 和 60.1 左右。第二种方法给了我一个精确的浮点值,可以用来实现垂直同步的效果,而不需要直接使用垂直同步。
我之所以这样问是因为 OpenGL 中缺乏可靠的 VSync,而且我不想在启动时依赖额外的图形 API 仅将其用于一个小功能。还有其他方法吗?