Direct2d 计时性能
Direct2d timing performance
我刚开始学习direct2d。我编写了一个测试应用程序,其中绘图部分基本上是空的,只是调用 m_pRenderTarget->BeginDraw()
,然后调用 m_pRenderTarget->EndDraw()
。我在调用 BeginDraw() 和 EndDraw() 之间进行了一些计时测量,发现它大约需要 16 毫秒。我尝试了 Window 7 64bit 和 Windows 10,结果相似。我对如此缓慢的表现感到惊讶。这个时间值是预期的还是我做错了什么?
感谢您的帮助,
山姆
非常感谢 Dai 为我指明了正确的方向。我发现了问题,是 D2D1_HWND_RENDER_TARGET_PROPERTIES 的 "present" 选项设置为 D2D1_PRESENT_OPTIONS_NONE,我将其更改为 D2D1_PRESENT_OPTIONS_IMMEDIATELY 并获得了更好的计时性能。
没有问题——正如 Dai 指出的那样,16 毫秒是 1/60 秒,因此 Begin 和 EndDraw 之间经过的时间确实应该是 16 毫秒。事实上,如果您使用 Ticks 检查它,您将得到大约 166666 个经过的 Ticks。我的系统 运行s 在 120Hz,所以当 运行 在这里时,我得到大约 8ms 或 83333 Ticks。
我刚开始学习direct2d。我编写了一个测试应用程序,其中绘图部分基本上是空的,只是调用 m_pRenderTarget->BeginDraw()
,然后调用 m_pRenderTarget->EndDraw()
。我在调用 BeginDraw() 和 EndDraw() 之间进行了一些计时测量,发现它大约需要 16 毫秒。我尝试了 Window 7 64bit 和 Windows 10,结果相似。我对如此缓慢的表现感到惊讶。这个时间值是预期的还是我做错了什么?
感谢您的帮助, 山姆
非常感谢 Dai 为我指明了正确的方向。我发现了问题,是 D2D1_HWND_RENDER_TARGET_PROPERTIES 的 "present" 选项设置为 D2D1_PRESENT_OPTIONS_NONE,我将其更改为 D2D1_PRESENT_OPTIONS_IMMEDIATELY 并获得了更好的计时性能。
没有问题——正如 Dai 指出的那样,16 毫秒是 1/60 秒,因此 Begin 和 EndDraw 之间经过的时间确实应该是 16 毫秒。事实上,如果您使用 Ticks 检查它,您将得到大约 166666 个经过的 Ticks。我的系统 运行s 在 120Hz,所以当 运行 在这里时,我得到大约 8ms 或 83333 Ticks。