视口内的精灵扭曲

问题描述 投票:0回答:1

我对视口的理解是,它会在指定的位置和尺寸处裁剪屏幕区域。我有一个较大的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();
}

尽管所需的地图显示应保持未缩放比例,但视口的地图显示会压缩到视口的左上侧。我要实现的只是绘制全比例尺地图中视口边界内的区域。对这个问题的任何帮助将不胜感激。

-

SOLVED

:我想到将视口代码放在SpriteBatch代码之外,现在它可以正常工作了。 :)

我对视口的理解是,它会在指定的位置和尺寸处裁剪屏幕区域。我有一个较大的2D瓷砖地图,该地图需要裁切才能仅在较小的正方形内显示...

c# viewport monogame
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.