XNA在进行2D相机转换时撕裂

时间:2010-02-09 04:48:45

标签: c# matrix xna

我不确定为什么会这样。

基本上我使用带有矩阵变换的Spritebatch将我的瓷砖地图渲染到屏幕上,我发现了这种奇怪的撕裂事情。 Tearing 请注意,当我使用Matrix.Identity进行渲染时,一切看起来都很好。

这是我用来创建Matrix的代码:         #region创建转型         private void CreateTransformation()         {             转型= Matrix.Identity;             Vector3 screenCenter =新的Vector3             (graphics.Viewport.Width * 0.5f,graphics.Viewport.Height * 0.5f,0f);

        transformation *= Matrix.CreateTranslation(-screenCenter); 
        transformation *= Matrix.CreateScale(zoom); 
        transformation *= Matrix.CreateTranslation(screenCenter); 
        transformation *= Matrix.CreateTranslation 
            (position.X * zoom, position.Y * zoom, 0f); 

        mustUpdateTransformation = false; 
    } 
    #endregion 

这是我用来开始SpriteBatch的代码:

        ScreenManager.SpriteBatch.Begin(SpriteBlendMode.AlphaBlend, SpriteSortMode.Immediate, SaveStateMode.None, camera.Transformation); 

以下是用于渲染每个图块的代码:

    public void Draw(SpriteBatch batch) 
    { 
        foreach (var layer in MapLayers) 
        { 
            foreach (Tile T in layer) 
            { 
                batch.Draw(T.SpriteSheet.Texture, T.Position, T.SpriteSheet.SourceRectangle(T.TileIndex), Color.White); 
            } 
        } 
    } 

有谁知道发生了什么事?

1 个答案:

答案 0 :(得分:1)

修正了,通过将像素空间表示为浮点而不是整数来做一些愚蠢的事情。