我想在监视器屏幕上按顺序画一个帧数
0 1 2 3 4 5 6 7。。。
每一个物理帧一个数字(每秒100次在100 Hz刷新率监视器上)是否可能winapi/gdi?怎么做?
GDI和GDI+都不允许您访问vsync信号。
不推荐使用的DirectDraw API有办法等待vsync。当您调用适当的Present方法时,较新的DirectX API基本上可以为您完成此操作(尽管我相信有一些选项可以选择而不是等待vsync)。
的现代版本具有桌面窗口管理器(一个合成器。请参阅https://en.wikipedia.org/wiki/Desktop_Window_Manager)。您可以要求它阻止,直到发生与视频帧速率同步的"某个事件"。只需调用DwmFlush()。我不会链接到文档,因为链接会过时。
在我的机器上,我的应用程序在等待DwmFlush()时被取消计划。换句话说,它不会浪费CPU周期忙于等待,这很好。
我相信Windows Vista和7有DWM,但它可能会被禁用。在Windows 8及更高版本上,它始终存在。