XNA 4.0でシンプルな3Dモデルビューアを開発しました。 Draw関数とUpdate関数で無限のゲームループを回避する方法はありますか? 3Dグラフィックをレンダリングする必要がありますが、シーンを無限にレンダリングする必要はありません。私はシーンを再描画する必要があることを意味します。XNA 4.0でのゲームループの回避
4
A
答えて
4
2
なぜこれを正確にしたいですか?
winformsアプリケーションを使用する場合は、更新と描画ループをより詳細に制御できますが、シーンをテクスチャにレンダリングしてからレンダリングを停止することもできます。彼らは彼らのサンプルでそれをやっているどのように私は見てみることをお勧め
1
は、あなたがあなた自身のマルチスレッドループをロールバックする必要があるとしています。 Update
またはDraw
のいずれかが停止した場合でも、もう一方が停止します。もう1つ考慮すべき点は、ウィンドウが非表示になった場合(非DWM環境の場合、ウィンドウが重複しているなど)、Draw
を停止すると、ウィンドウの領域が塗装されていないことになります。
これを進めたい場合は、最初にUpdate
が呼び出された後にManualResetEvent
を使用して2つを同期させると、Thread
が開始されます。
シーンが更新されると、シーン全体がRenderTarget2D
にレンダリングされます。シーンが最後のUpdate
またはDraw
から変更されていない場合は、単にシーン全体ではなくRenderTarget2D
をレンダリングします。これはまだ無限ループですが、条件を満たす傾向があります(条件を満たしていなくても)。
1
この種のシナリオは、レンダリングシステムのホストとしてWinFormsまたはWPFを使用することによって最もよく解決されます。私はそのようなシステムで以前に働いていたし、SlimDXとWPF Interopを使っているのが私の好みの解決策であることが分かった。このアプローチを使用すると、表面にレンダリングされた3Dモデルにオーバーレイされた、WPFによって提供される優れたUI機能の追加が可能になります。
関連する問題
- 1. XNA 4.0のラップタイマー?
- 2. XNA 4.0 + DirectX 9?
- 3. XNA 4.0 Glowing objects
- 4. のWindows Phone XNAフレームワーク4.0
- 5. XNA 4.0カメラの質問
- 6. XNA 4.0モデルテクスチャの問題
- 7. XNA 4.0 CameraPositionの質問に
- 8. NinjectとXna 4.0の統合
- 9. XNA 4.0でDynamicVertexBufferを使用
- 10. (C#)XNA 4.0 StencilBufferアクセス
- 11. C#XNA 4.0動的コンテンツ
- 12. XNA 4.0衝突検出
- 13. XNA 4.0ポイント頂点レンダリング
- 14. XNA 4.0 WP7ゲーム音量コントロール
- 15. XNA 4.0 with C#.NET 4.5?
- 16. XNA 4.0カスタム頂点宣言
- 17. XNAでのクォータニオンの回転
- 18. XNA 4.0のVisual Studio 2010のエラー
- 19. XNA 4.0ルームアルゴリズムの発見問題
- 20. XNA 4.0で線幅を設定する
- 21. (XNA 3.1 "Effect.CompileFromFIle")は、(XNA 4.0)に相当しますか?
- 22. XNA GameStudio 4.0、フル.NETフレームワーク(4.0)をターゲットにする方法
- 23. XNAで3Dモデルを回転
- 24. C#ゲームループと入力
- 25. XNA 4.0 2Dカメラはので、ここでスプライトジャーキー
- 26. XNA 4.0で描画されたSpriteFontの消去
- 27. Xbox 360用のXNA 4.0で点灯するデザインパターン?
- 28. クォーツシェイディングミスの回避
- 29. 回避(NUnitの)
- 30. ハンドリングcocos2dのゲームループ