我不确定为什么会这样。
基本上我使用带有矩阵变换的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);
}
}
}
有谁知道发生了什么事?
答案 0 :(得分:1)
修正了,通过将像素空间表示为浮点而不是整数来做一些愚蠢的事情。