Разрыв XNA при преобразовании 2D камеры - PullRequest
1 голос
/ 09 февраля 2010

Я не уверен, почему это происходит.

По сути, я рендерил свою карту тайлов на экран, используя Spritebatch с матричным преобразованием, и я получаю эту странную вещь. Tearing Обратите внимание, что все выглядит хорошо, когда я рендеринг с использованием Matrix.Identity.

Это код, который я использую для создания матрицы: #region Создание трансформации приватная пустота CreateTransformation () { преобразование = 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 

И вот код, который я использую для запуска 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 Ответ

1 голос
/ 09 февраля 2010

Исправлено, делало что-то глупое, представляя пространство пикселей в виде чисел с плавающей точкой вместо целых.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...