2017-04-19 194 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,这是为你完成的。