2017-04-19 91 views
1

在使用libGDX時,我注意到偶爾我畫到屏幕上的紋理沒有被繪製到確切的像素上,而是從各個邊上的其他紋理的邊緣的小部分繪製(例如,來自頭髮頂部的像素線正被呈現在玩家腳下)。爲什麼我的libGDX TextureAtlas不正確地渲染spritesheet紋理?

Working properlyBlack line below feet

當我擴展我的比賽,以不同的大小,黑色線條出現在從我只能假設是相鄰的紋理兩側。

enter image description here

試圖呈現從TextureAtlas文件中的文本字段的字體,當我得到了同樣的問題。

我使用Nearest Neighbor從TextureAtlas加載這些紋理。這裏是我的精靈表,這些都是我的TextureAtlas從精靈表

enter image description here

player.png 
size: 64, 128 
format: RGBA8888 
filter: Nearest,Nearest 
repeat: none 
player1moveDown 
    rotate: false 
    xy: 0, 0 
    size: 10, 16 
    orig: 10, 16 
    offset: 0, 0 
    index: 1 
player1moveDown 
    rotate: false 
    xy: 10, 0 
    size: 10, 16 
    orig: 10, 16 
    offset: 0, 0 
    index: 2 
player1moveDown 
    rotate: false 
    xy: 20, 0 
    size: 10, 16 
    orig: 10, 16 
    offset: 0, 0 
    index: 3 

作出選擇,是否有任何合理的解釋,爲什麼我的TextureAtlas沒有完全切斷了圖像?

作爲一個後續問題,有什麼我可以做的解決它,或者我應該在每個紋理周圍添加一些透明填充?

編輯: 我在GUI TexturePacker中找到了該設置。在窗口的右側,在「雪碧」,你可以通過修改「形狀填充」值

enter image description here

回答

2

的Atlas是完美切割更改每個紋理之間的空間,但浮動精度可導致此從紋理採樣時發出問題。解決方案是在圖像上的圖像之間放置透明空間。如果你使用TexturePacker,這是爲你完成的。