簡體   English   中英

XNA-繪制縮放的2D精靈

[英]XNA - Drawing zoomed 2D sprites

我有一個基於圖塊的游戲。 加載每個貼圖紋理,然后將每個貼圖彼此相鄰繪制,形成連續的背景。 實際上,我已按照本教程中的xml文件進行操作。

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

紋理的來源是50x50。

但是,如果比例尺更大,則僅在比例尺為1(或更小)時才起作用

結果:正常大小(50像素,比例1) http://imageshack.us/photo/my-images/525/smallzp.jpg/

較大的尺寸(在xml文件中放大或100像素) 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);

是否有一個原因? 一種在縮放時使其具有連續紋理的方法?

問題在於您的采樣器狀態,GPU試圖對點附近的顏色進行采樣以對其進行插值。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM