Tearing when doing camera transformations

February 9, 2010 by admin
Filed under: Xbox360 News 

I'm not sure why this is happening.

Basically I render my tile map to the screen using a Spritebatch with a matrix transformation, and I get this weird tearing thing happening.
Tearing
Note that everything looks fine when I render using Matrix.Identity.

This is the code that I use to create the Matrix:

        #region Creating Transformation 
        private void CreateTransformation() 
        { 
            transformation = Matrix.Identity; 
            Vector3 screenCenter = new 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 

And this is the code that I use to begin the SpriteBatch:

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

And here is the code used to render each tile:

        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); 
                } 
            } 
        } 

Does anyone know what is going on?

Comments

Feel free to leave a comment...
and oh, if you want a pic to show with your comment, go get a gravatar!