[英]Avoiding game loop in XNA 4.0
我在XNA 4.0上开发了一个简单的3D模型查看器。 有没有办法避免使用绘图和更新功能的无限游戏循环? 我需要渲染3D图形,但没有无限的场景渲染。 我的意思是我需要重绘场景才真正改变了。
我建议看看他们在样本中是如何做到的:
为什么你想要这个?
如果使用winforms应用程序,您可以更好地控制更新和绘制循环,但您也可以先将场景渲染到纹理,然后再停止渲染。
您将不得不推出自己的多线程循环; 如果你拖延Update
或Draw
另一个也将停止。 另一个考虑因素是,如果你的窗口以某种方式被遮挡(在非DWM环境下;例如一个窗口重叠它),拖延Draw
会使你的窗口区域没有涂层。
如果你想继续这个; 你要做的是在第一次调用Update
时启动一个Thread
,然后使用ManualResetEvent
来同步这两个。
一个更强大的选项是在场景更新时将整个场景渲染到RenderTarget2D
; 如果自上次Update
或Draw
调用后场景未被更改,则只渲染RenderTarget2D
而不是整个场景。 这仍然是一个无限循环,但它倾向于你的要求(即使它不符合它)。
通过使用WinForms或WPF作为渲染系统的主机,可以最好地解决这种情况。 之前我曾经使用过这样的系统,我发现使用SlimDX和WPF Interop是我的首选解决方案。 使用这种方法可以添加WPF提供的漂亮的UI功能,覆盖渲染到表面的3D模型。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.