我在XNA 4.0上开发一个简单的3D模型查看器。有没有办法避免使用绘图和更新功能的无限游戏循环?我需要渲染3D图形,但没有无限的场景渲染。我的意思是我需要重新绘制场景才真正改变了。
答案 0 :(得分:4)
我建议看一下他们在样本中的表现:
答案 1 :(得分:2)
为什么你想要这个?
如果您使用winforms应用程序,您可以更好地控制更新和绘制循环,但您也可以先将场景渲染为纹理,然后再停止渲染。
答案 2 :(得分:1)
你将不得不推出自己的多线程循环;如果你拖延Update
或Draw
,另一个也会停滞不前。另一个考虑因素是,如果你的窗口以某种方式被遮挡(在非DWM环境下;例如一个窗口重叠它),拖延Draw
会使窗口区域没有涂层。
如果你想继续这个;您将要做的是在Thread
第一次被调用时开始Update
,然后使用ManualResetEvent
来同步这两者。
更强大的选项是在场景更新时将整个场景渲染为RenderTarget2D
;如果自上次Update
或Draw
调用后场景未被更改,则只需呈现RenderTarget2D
而不是整个场景。这仍然是一个无限循环,但它倾向于你的要求(即使它不符合它)。
答案 3 :(得分:1)
使用WinForms或WPF作为渲染系统的主机,可以最好地解决这种情况。我以前使用过这样的系统,我发现使用SlimDX WPF Interop是我的首选解决方案。使用这种方法可以添加WPF提供的漂亮的UI功能,覆盖渲染到表面的3D模型。