Direct2d定时性能

3
我刚开始学习direct2d。我写了一个测试应用程序,绘图部分基本上是空的,只有调用 m_pRenderTarget->BeginDraw()m_pRenderTarget->EndDraw()。我在 BeginDraw() 和 EndDraw() 之间进行了一些计时测量,发现大约需要16毫秒。我在 Windows 7 64位和 Windows 10 上尝试了一下,结果类似。我对这样的性能表现感到惊讶。这个时间值是正常的吗?还是我做错了什么?
谢谢您的帮助, Sam

2
16毫秒是一秒的1/60。你的显示器可能以60Hz运行。 - Dai
2个回答

1
非常感谢 Dai 指导我走向正确的方向。我找到了问题所在,是 D2D1_HWND_RENDER_TARGET_PROPERTIES 的 "present" 选项被设置为 D2D1_PRESENT_OPTIONS_NONE,我将其更改为 D2D1_PRESENT_OPTIONS_IMMEDIATELY,并获得了更好的时序性能。

1

没有问题 - 正如Dai所指出的那样,16ms是1/60秒,因此Begin和EndDraw之间的经过时间确实应该是16ms。事实上,如果您使用Ticks进行检查,您将得到大约166666个经过的Ticks。我的系统运行在120Hz,因此在这里运行时,我得到大约8ms或83333个Ticks。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接