C# 避免XNA4.0中的游戏循环

C# 避免XNA4.0中的游戏循环,c#,xna,game-loop,C#,Xna,Game Loop,我正在XNA4.0上开发一个简单的3D模型查看器。有没有一种方法可以避免使用绘图和更新功能的无限游戏循环?我需要渲染3D图形,但不需要无限渲染场景。我的意思是我需要重新绘制场景,直到它真正改变。你到底为什么想要这个 如果您使用winforms应用程序,您可以更好地控制更新和绘制循环,但也可以先将场景渲染为纹理,然后再停止渲染。我建议您看看他们在示例中是如何进行的: 您必须滚动您自己的多线程循环;如果您暂停Update或Draw,另一个也会暂停。另一个需要考虑的问题是,如果您的窗口以某种方式被遮

我正在XNA4.0上开发一个简单的3D模型查看器。有没有一种方法可以避免使用绘图和更新功能的无限游戏循环?我需要渲染3D图形,但不需要无限渲染场景。我的意思是我需要重新绘制场景,直到它真正改变。

你到底为什么想要这个


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

我建议您看看他们在示例中是如何进行的:



您必须滚动您自己的多线程循环;如果您暂停
Update
Draw
,另一个也会暂停。另一个需要考虑的问题是,如果您的窗口以某种方式被遮挡(在非DWM环境下;例如,一个窗口与它重叠),则暂停
绘制将使窗口的某些区域未被绘制

如果你想继续这样做;您要做的是在第一次调用
Update
时启动
线程
,然后使用
手动重置事件
将两者同步


一个更健壮的选项是在更新场景时将整个场景渲染为
RenderTarget2D
;如果自上次
更新
绘制
调用以来场景未被更改,只需渲染
渲染目标2D
,而不是整个场景。这仍然是一个无限循环,但它倾向于您的需求(即使它不满足您的需求)。

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