为什么我的 libGDX TextureAtlas 无法正确渲染 spritesheet 纹理?
Why is my libGDX TextureAtlas improperly rendering spritesheet textures?
在使用 libGDX 时,我注意到有时我在屏幕上绘制的纹理并没有绘制到确切的像素,而是使用其他纹理边缘的微小部分绘制不同的侧面(例如,这里从头发顶部开始的一行像素被渲染到玩家的脚下)。
当我将我的游戏缩放到不同的大小时,黑线出现在我只能假设是相邻纹理的两侧。
我在尝试从 TextureAtlas 文件渲染文本字段中的字体时遇到同样的问题。
我正在使用最近邻从 TextureAtlas 加载这些纹理。这是我的精灵 sheet,这些是我的 TextureAtlas 从精灵 sheet
中做出的选择
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 中找到了设置。在 window 的右侧,在 "Sprite" 下,您可以通过修改 "Shape Padding" 值
来更改每个纹理之间的 space
图集切割完美,但从纹理采样时浮点精度会导致此问题。解决方案是在图集上的图像之间放置透明 space。如果您使用 TexturePacker,这已经为您完成了。
在使用 libGDX 时,我注意到有时我在屏幕上绘制的纹理并没有绘制到确切的像素,而是使用其他纹理边缘的微小部分绘制不同的侧面(例如,这里从头发顶部开始的一行像素被渲染到玩家的脚下)。
当我将我的游戏缩放到不同的大小时,黑线出现在我只能假设是相邻纹理的两侧。
我在尝试从 TextureAtlas 文件渲染文本字段中的字体时遇到同样的问题。
我正在使用最近邻从 TextureAtlas 加载这些纹理。这是我的精灵 sheet,这些是我的 TextureAtlas 从精灵 sheet
中做出的选择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 中找到了设置。在 window 的右侧,在 "Sprite" 下,您可以通过修改 "Shape Padding" 值
来更改每个纹理之间的 space图集切割完美,但从纹理采样时浮点精度会导致此问题。解决方案是在图集上的图像之间放置透明 space。如果您使用 TexturePacker,这已经为您完成了。