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