0

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);
4

1 に答える 1

0

実際、これは私の悪いことでした。ビューポートの設定方法にエラーがありました。

Vector4 cameraViewport;
public Vecor4 viewport
{
     Vector4 newviewport = value;
     cameraViewport = new Vector4(mathhelper.clamp(newviewport.x,0,1),...  //here was my problem i was setting the y value the same as the x value i didnt even think to check here sorry for this kinda point less question unless someone else has the same problem.  
}
于 2012-11-13T19:42:10.280 に答える