我正在尝试为我的 XNA 游戏创建一个 splitScreen。我有一个用作相机的相机类,当需要绘制时,我调用包含以下代码的函数。cameraViewport 是一个vector4,所有值都在0,1之间。对于我使用的第一台相机
camera1.viewport = new vector4(0,0,1,.5f); // this works perfect
对于我正在使用的第二台相机
camera2.viewport = new vector4(0,.5f,1,.5f); // this is drawling the same view as camera1
但是当我为相机二做这个时
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);