2012-05-12 99 views
0

我有一個基於瓷磚的遊戲。每個瓷磚紋理都被加載,然後我將每個瓷磚紋理相鄰,形成一個連續的背景。我實際上按照這個教程的XML文件。XNA - 繪製縮放2D精靈

http://www.xnadevelopment.com/tutorials/looksleveltome/looksleveltome.shtml

紋理的來源爲50x50。

然而,它只能它的比例爲1(或更低),如果比例大於

結果:正常尺寸(50像素和規模1) http://imageshack.us/photo/my-images/525/smallzp.jpg/

更大的尺寸(縮小或100像素xml文件) http://imageshack.us/photo/my-images/577/largeki.jpg/

我們可以看到瓷磚之間存在線條,這些線條不在紋理中。它實際上不是那麼糟糕這裏,但在我的遊戲地形設置,這就是它的作用: http://imageshack.us/photo/my-images/687/zoomedsize.png/

同樣的效果是目前我是否增加在XML文件中的平鋪尺寸,繪製時更改比例或使用我的相機放大。

//zoom code 
public Matrix GetTransformation() 
{ 
    return 
     Matrix.CreateTranslation(new Vector3(-_pos.X, -_pos.Y, 0)) * 
     Matrix.CreateRotationZ(Rotation) * 
     Matrix.CreateScale(new Vector3(Zoom, Zoom, 1)) * 
     Matrix.CreateTranslation(new Vector3(_device.Viewport.Width * 0.5f, _device.Viewport.Height * 0.5f, 0)); 
} 

//draw 
_spriteBatch.Begin(SpriteSortMode.Immediate, 
    BlendState.AlphaBlend, null, null, null, null, 
    _camera.GetTransformation()); 

//for each tile 
theSpriteBatch.Draw(mSpriteTexture, Position, Source, 
    Color.Lerp(Color.White, Color.Transparent, mAlphaValue), 
    mRotation, new Vector2(mSource.Width/2, mSource.Height/2), 
    Scale, SpriteEffects.None, mDepth); 

這是有原因嗎?一種方法來解決它放大時有連續的紋理?

回答

1

問題在於你的採樣器狀態,gpu試圖採樣點附近的顏色來插入它們。

在您的spriteBatch.Begin()中使用SamplerState.PointClamp,它將被修復。

+0

這是天才,它的作品!謝謝! – Amaranth