我在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 WP7游戏音量控制
- 4. XNA游戏工作室4.0使用C#
- 5. XNA 4.0动画循环
- 6. 暂停游戏循环?
- 7. 如何使用XNA检查2D游戏中的循环移动?
- 8. 回合制游戏的游戏循环
- 9. 使用Ninject 2.0避免XNA中的循环依赖关系
- 10. Win32游戏循环
- 11. 在游戏循环
- 12. BlackJack游戏循环
- 13. 游戏循环 - 线程
- 14. Lua,游戏状态和游戏循环
- 15. 文字游戏 - 游戏循环
- 16. 如何避免sql server中的游标?也想避免while循环
- 17. 避免while循环
- 18. 避免for循环
- 19. XNA“游戏循环”的实际代码在哪里?
- 20. 简单的游戏循环不循环?
- 21. 避免在Matlab中循环
- 22. XNA游戏组件
- 23. 鼠标XNA游戏
- 24. XNA游戏性能
- 25. XNA游戏教程
- 26. 非XNA游戏进入游戏?
- 27. 在XNA游戏中progressBar
- 28. C#游戏循环和输入
- 29. 在Android游戏中放置主游戏循环的位置
- 30. 游戏循环中游戏对象的设计模式