我有一个带有 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 之间。 参数名称:value
这以前很有效,但显然现在不是正确的做事方式。有没有快速解决这个问题的好方法?还是我不得不完全改变放大和缩小的方式?