[英]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.