ウィンドウモードのXNAゲームでは、ユーザーがウィンドウのサイズを変更すると、ゲームがウィンドウの更新を停止し、ユーザーがマウスを離してサイズ変更が完了するまで、最後に描画されたフレームが引き伸ばされて変形します。
サイズ変更イベント中にゲームを「通常」に実行し続け、フレームを更新し、画面を再描画する方法はありますか?
ハードウェア管理リソースが継続的に作成および破棄されるため、サイズ変更中にレンダーループを維持することは不可能または推奨されない可能性があることを理解していますが、醜いストレッチを停止する方法はありますか?理想的には、左上に既存のフレームを拡大縮小せずに残すか、それが不可能な場合は黒い画面にします。
ウィンドウサイズ変更のイベントを登録し、GraphicsDevice解像度を更新します。これにより、アスペクト比が更新され、ストレッチが修正される場合があります。
—
Gustavo Maciel 2012年
C#/ XNAについては知りませんが、C ++ / D3Dでは、メッセージループを持つメインスレッドとは別のスレッドでレンダーループを実行しました。メインスレッドは、サイズ変更イベントが発生すると、ミューテックスを介して同期され、バッファーのサイズ変更を実行します。
グスタボ、私はすでにゲームの他の目的でそのイベントを処理しています。残念ながら、サイズ変更が完了してユーザーがマウスを離すまで起動しません。
—
Bradley Uffner、2012年
この質問と回答のペアが役立つ場合があります。レンダリングを継続する方法を示します(ただし、ストレッチは修正されません)。
—
Andrew Russell