2D カメラを搭載した古い XNA 3.1 ゲームを最近 XNA 4.0 に変換しました。
新しいビューポートを作成し、境界をカメラの幅/高さに設定してから、次のように「マージ」してカメラをズームしました。
Viewport viewport = new Viewport();
viewport.X = 0;
viewport.Y = 0;
viewport.Width = camera.DisplayWidth;
viewport.Height = camera.DisplayHeight;
Viewport priorViewport = this.GraphicsDevice.Viewport;
this.GraphicsDevice.Viewport = viewport;
GraphicsDevice.Clear(Color.Black);
DrawGameLayer(gameTime, "PreContent");
this.GraphicsDevice.Viewport = priorViewport;
ただし、新しいビューポートの解像度がグラフィックス デバイスのビューポートの解像度よりも大きくなると (ズームアウト時)、次のように 7 行目で爆発します。
ビューポートが無効です。ビューポートは、現在のレンダー ターゲットの境界よりも大きくすることも、外に出すこともできません。MinDepth と MaxDepth は 0 から 1 の間でなければなりません。 パラメータ名: 値
これは以前は完全に機能していましたが、現在は明らかに正しい方法ではありません。これをすばやく修正する良い方法はありますか?または、ズームインとズームアウトの方法を完全に変更する必要がありますか?