我只是通過了DirectX文檔閱讀和遇到IDirect3DDevice9::BeginScene東西在頁面有趣:DirectX:遊戲循環順序,先繪製然後處理輸入?
要啓用 CPU和圖形加速器之間的最大並行性, 是有利的調用 的IDirect3DDevice9 :: EndScene至目前爲止 在呼叫前儘可能。
我已經習慣於編寫我的遊戲循環來處理輸入等,然後繪製。我有沒有倒退?也許遊戲循環應該更多這樣的:(半僞代碼,很明顯)
while(running) {
d3ddev->Clear(...);
d3ddev->BeginScene();
// draw things
d3ddev->EndScene();
// handle input
// do any other processing
// play sounds, etc.
d3ddev->Present(NULL, NULL, NULL, NULL);
}
根據文檔的那句話,這個循環將「啓用最大並行」。
這是常見的嗎?訂購遊戲循環有什麼不利之處嗎?在第一次迭代之後,我發現它沒有真正的問題...而且我知道知道實際速度增加的最好方法是實際測試它的基準,但其他人已經嘗試過這一點,並且可以證明任何實際速度增加?
我沒有經驗的DirectX(XNA開發),但我知道,這可能會導致輕微的「laggy」的感覺以遊戲爲你的遊戲走上前去,與新供給的輸入更新之前的事情被吸引。 – RCIX 2010-05-03 05:06:45
@RCIX查看我的回答 – 2010-05-03 05:20:40