我的单线程双缓冲 Opengl 游戏使用 HWND、HDC 和 HGLRC 组合在两台显示器上运行。所以每个帧缓冲区的大小为 2560 x 1024。
我的电脑是:
Intel Core 2 Quad CPU @ 3.00GHz ATI Radeon HD 3400 系列 512MB VRAM DAC 400MHz 两台显示器均调至 60Hz 和 (1280 x 1024) 分辨率。
我看到我的关闭 vsyncing 的游戏以大约 36FPS 的速度运行。当 vsyncing 打开时,游戏同步到 20FPS,直到像任务管理器这样的 GDI 应用程序获得焦点并在其上渲染。然后我们看到游戏帧率上升到 30FPS,而任务管理器有焦点。FRAPS 确认我的配置帧率是准确的。
20FPS 是预期的垂直同步速率吗?我的印象是 60Hz 显示器的有效值是 60,30,15,10...?
我还设法敲出一个背景纹理演示,以与我的游戏相同的初始渲染器设置运行,我看到 Vsync 关闭时为 72FPS,而 Vsync ON 同步到 30FPS。同步到 60FPS 发生了什么?
就好像我错过了一个垂直同步中断或计时器,除非存在 GDI 窗口。
仅供参考,我正在使用 QueryPerformanceCounter 来获取高分辨率计时器来计算所有 FPS 计算。