如在Optimizing DirectX apps for low latency input...中所解释的,使用DXGI_SWAP_CHAIN_FLAG_FRAME_LATENCY_WAITABLE_OBJECT可以使应用程序更具响应能力。我有几个关于这方面的问题:使用“等待对象”进行DirectX 11优化
- 为什么我不能在执行下一个游戏循环之前等待之前调用“Present1”结束的同样效果?
- 根据MSDN article我可以通过创建交换链获得等待对象CreateSwapChainForCoreWindow。有没有办法从常规的Win32应用程序(而不是Windows应用商店应用程序)获取CoreWindow?
感谢
所以实际上,即使当我看到** Present1 **每16秒毫秒返回时,实际上它会在缓冲区排队时返回,而不是缓冲区是否显示给用户? 您提到的“3帧”的数量是多少?或者可以更改一些神奇的数字? –
我也看过'DXGI_PRESENT_DO_NOT_WAIT',看起来这还没有告诉我帧何时出现,只是帧没有被阻塞排队,对吧? 那么有什么方法可以知道帧何时实际显示给用户?理想情况下,我想知道演示的绝对时间,以便正确预测当时的对象。 我也尝试过使用'IDXGIOutput-> WaitForVBlank()',它似乎给出了合理的结果,但精度低。 –
做了一些更多的测试后,似乎通过执行'Present(0)',然后是'WaitForVBlank()'得到最好的结果。这有意义吗? –