为什么我的 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,这已经为您完成了。