3

我想在我的显示器屏幕上按顺序绘制一个帧号

0 1 2 3 4 5 6 7 ...

每一个物理帧一个数字(在 100 Hz 刷新率监视器上每秒 100 次)在 winapi/gdi 下是否可能?怎么做?

4

2 回答 2

2

GDI 和 GDI+ 都不允许您访问 vsync 信号。

已弃用的 DirectDraw API 有一种等待 vsync 的方法。当您调用适当的 Present 方法时,较新的 DirectX API 基本上会为您执行此操作(尽管我相信有等待 vsync 的选项)。

于 2012-09-13T17:47:54.843 回答
0

现代版本具有桌面窗口管理器(合成器。请参阅https://en.wikipedia.org/wiki/Desktop_Window_Manager)。您可以要求它阻止,直到发生与视频帧速率同步的“某些事件”。只需调用 DwmFlush()。我不会链接到文档,因为链接会过时。

在我的机器上,我的应用程序在等待 DwmFlush() 时被取消调度。换句话说,它不会浪费 CPU 周期忙等待,这很好。

我相信 Windows Vista 和 7 有 DWM,但它可以被禁用。在 Windows 8 及更高版本上,它始终存在。

于 2018-08-10T15:21:40.023 回答