IDirect3DDevice9::Present()会阻塞,达到的最高fps和屏幕刷新率一样,因为Direct3D有这项机制,认为更新频率高于屏幕刷新率没有实际意义,所以在Present里阻塞了一段时间。这是一个很方便的功能,但有时我们不想让Present阻塞我们的主循环。微软的Present函数的文档中并没有指出Present阻塞的问题,而是在其他地方说明了,解决办法就是在创建Device的时候指定其更新频率,在D3DPRESENT_PARAMETERS.PresentationInterval这个属性,指定成D3DPRESENT_INTERVAL_IMMEDIATE。
IDirect3DDevice9::Present()阻塞10多毫秒ms才返回,fps只能达到60的原因及解决办法
最新推荐文章于 2021-02-09 15:46:36 发布