繁体   English   中英

在XNA 4.0中避免游戏循环

[英]Avoiding game loop in XNA 4.0

我在XNA 4.0上开发了一个简单的3D模型查看器。 有没有办法避免使用绘图和更新功能的无限游戏循环? 我需要渲染3D图形,但没有无限的场景渲染。 我的意思是我需要重绘场景才真正改变了。

我建议看看他们在样本中是如何做到的:

App Hub - WinForms系列1
App Hub - WinForms系列2

为什么你想要这个?

如果使用winforms应用程序,您可以更好地控制更新和绘制循环,但您也可以先将场景渲染到纹理,然后再停止渲染。

您将不得不推出自己的多线程循环; 如果你拖延UpdateDraw另一个也将停止。 另一个考虑因素是,如果你的窗口以某种方式被遮挡(在非DWM环境下;例如一个窗口重叠它),拖延Draw会使你的窗口区域没有涂层。

如果你想继续这个; 你要做的是在第一次调用Update时启动一个Thread ,然后使用ManualResetEvent来同步这两个。

一个更强大的选项是在场景更新时将整个场景渲染到RenderTarget2D ; 如果自上次UpdateDraw调用后场景未被更改,则只渲染RenderTarget2D而不是整个场景。 这仍然是一个无限循环,但它倾向于你的要求(即使它不符合它)。

通过使用WinFormsWPF作为渲染系统的主机,可以最好地解决这种情况。 之前我曾经使用过这样的系统,我发现使用SlimDXWPF Interop是我的首选解决方案。 使用这种方法可以添加WPF提供的漂亮的UI功能,覆盖渲染到表面的3D模型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM