こんにちは私はメインのゲームフォームと他の多くの通常のフォームでゲームを書きたいです。その場合、更新とペイントのサイクルを管理するための最良の方法は何ですか?
ゲームフォームのペイントループのみをオーバーライドする必要がありますか?または、mainメソッドでapplication.do events()を実行する必要がありますか?
これについて教えてください。私はWindowsフォームの世界に不慣れです
質問の本文では、コンパクト フレームワークについては言及されておらず、Winforms についてのみ言及されています。これは、Tom Miller (Microsoft の Xna Game Studio および Managed DirectX 担当者) からの Winforms に対するほぼ受け入れられた回答です。
@Rich B: ゲーム ループは、レンダリングの実行方法 (DirectX、MDX、GDI+) とは無関係です。
ロジック スレッドはフォームから分離する必要があるため、DoEvents() は必要ありません。GDI+ を使用している場合は、ループで Update() を強制する必要があります。Windows フォームはダブル バッファリングをうまく処理できないため、グラフィックの洗練度によっては、ちらつきの問題が発生する場合があります。
私の提案は、DirectX マネージ ライブラリの使用を検討することです。学ぶことはたくさんありますが、必要なものはすべて提供されます。
編集: DirectX マネージド Library よりもはるかに高いレベルの API を提供するため、単純なゲームから適度に複雑なゲームのはるかに優れたプラットフォームのように思われる WPF について最近読んでいます。ただし、より複雑なゲームでは、おそらくパフォーマンスと柔軟性に制限があります。