我在XNA 4.0上開發了一個簡單的3D模型查看器。有沒有辦法避免使用Draw和Update函數的無限循環?我需要渲染3D圖形,但沒有無限渲染場景。我的意思是我需要重畫場景,然後才真正改變。避免XNA 4.0中的遊戲循環
4
A
回答
4
我建議採取看看他們是如何他們的樣品在做這件事:
2
爲什麼你要這個?
如果使用winforms應用程序,則可以更好地控制更新和繪製循環,但也可以先將場景渲染到紋理,然後再停止渲染。
1
你將不得不推出自己的多線程循環;如果你失敗Update
或Draw
另一個也會停滯。另一個考慮是,如果你的窗口被某種方式弄得模糊不清(在非DWM環境下;例如與之重疊的窗口),拖延Draw
將使窗口的區域未上色。
如果你想繼續這樣做;你要做的就是開始一個Thread
第一次Update
被調用,然後使用ManualResetEvent
來同步這兩者。
更強大的選項是在場景更新時將整個場景渲染到RenderTarget2D
;如果場景自上次調用Update
或Draw
以來沒有發生變化,則只需渲染RenderTarget2D
而不是整個場景。這仍然是一個無限循環,但它趨向於您的要求(即使它不符合要求)。
1
通過使用WinForms或WPF作爲渲染系統的主機,可以最好地解決這種情況。之前我曾使用這樣的系統,並且發現使用SlimDX和WPF Interop是我的首選解決方案。使用這種方法可以添加由WPF提供的漂亮的UI功能,覆蓋渲染到表面的3D模型。
相關問題
- 1. XNA Windows遊戲(4.0)ContentLoadException
- 2. 如何避免遊戲渲染組件循環引用?
- 3. XNA遊戲工作室4.0使用C#
- 4. XNA 4.0 2D空間射擊遊戲
- 5. XNA 4.0 WP7遊戲音量控制
- 6. XNA 4.0動畫循環
- 7. 暫停遊戲循環?
- 8. 避免循環
- 9. 如何使用XNA檢查2D遊戲中的循環移動?
- 10. 回合制遊戲的遊戲循環
- 11. 使用Ninject 2.0避免XNA中的循環依賴關係
- 12. JAVA遊戲循環?
- 13. Win32遊戲循環
- 14. Javascript遊戲循環
- 15. 在遊戲循環
- 16. BlackJack遊戲循環
- 17. 遊戲循環 - 線程
- 18. 如何避免sql server中的遊標?也想避免while循環
- 19. Lua,遊戲狀態和遊戲循環
- 20. 文字遊戲 - 遊戲循環
- 21. 避免for循環
- 22. 避免循環iframe
- 23. 避免while循環
- 24. XNA「遊戲循環」的實際代碼在哪裏?
- 25. 簡單的遊戲循環不循環?
- 26. 避免在Matlab中循環
- 27. 在Scala中避免循環
- 28. Android版Firemonkey中的遊戲循環
- 29. 遊戲循環的問題
- 30. 使用帶有XNA(Windows)遊戲項目的XNA(Windows)遊戲庫