XNA ゲームの splitScreen を作成しようとしています。カメラとして使用するカメラ クラスがあり、描画するときは、以下のコードを含む関数を呼び出します。cameraViewport は vector4 で、すべての値が 0 から 1 の間です。初めて使うカメラに
camera1.viewport = new vector4(0,0,1,.5f); // this works perfect
そして、私が使用している2番目のカメラについて
camera2.viewport = new vector4(0,.5f,1,.5f); // this is drawling the same view as camera1
しかし、カメラ2に対してこれを行うと
camera2.viewport = new vector3(.5f,0,.5f,.5f);
まるで私がそれを4つの方法で分割していて、右下にあるように見えますが、右上にあるはずです。そのため、y 値をまったく使用せず、x 値のみを使用しているように見えます。何故ですか?
int x = (int)(defaultViewport.Width * CameraViewport.X);
int y = (int)(defaultViewport.Height * CameraViewport.Y);
int w = (int)(defaultViewport.Width * CameraViewport.Z);
int h = (int)(defaultViewport.Height * CameraViewport.W);
Viewport viewport = new Viewport(x, y, w, h);
graphics.Viewport = viewport;
this.Projection = Matrix.CreatePerspectiveFieldOfView(MathHelper.ToRadians(45), viewport.AspectRatio, .1f, 5000);