精灵在视口内扭曲

Sprites distorted within viewport

我对 Viewport 的理解是它在指定的位置和尺寸处裁剪屏幕区域。 我有一个大型 2D 瓦片地图,需要裁剪以仅在屏幕的较小方形区域内显示,以便仅查看较大地图的该区域。 然而,在使用以下代码实现视口后,在视口有效时绘制的任何精灵都会高度扭曲,就好像整个原始屏幕尺寸正在缩小以适应视口尺寸。

public override void Draw(GameTime gameTime_) {
                SpriteBatch spriteBatch = screenManager.spriteBatch;
                spriteBatch.Begin(SpriteSortMode.Immediate,BlendState.AlphaBlend,SamplerState.PointClamp,DepthStencilState.Default,RasterizerState.CullNone);
                //draw panel
                spriteBatch.Draw(minimapPanelGfx,new Vector2(panelX,panelY),Color.White);
                //set up and activate viewport
                Viewport mapView = new Viewport(panelX+88,panelY+55,260,260);
                Viewport origView = TQGame.graphics.GraphicsDevice.Viewport;
                TQGame.graphics.GraphicsDevice.Viewport = mapView;
                //draw minimap (simplified as example)
                spriteBatch.Draw(minimapGfx,new Vector2(panelX+100,panelY+100),Color.White);
                //restore original fullscreen viewport
                TQGame.graphics.GraphicsDevice.Viewport = origView;
                //
                spriteBatch.End();
}

虽然所需的地图显示应该保持未缩放,但视口地图显示被压缩到视口的左上侧。我想要实现的是只绘制落在视口边界内的全比例地图区域。非常感谢对此问题的任何帮助。

--

已解决:我想到将视口代码放在 SpriteBatch 代码之外,现在它按预期工作了。 :)

我想到将视口代码放在 SpriteBatch 代码之外,现在它按预期工作了。 :)