【问题标题】:Why is my libGDX TextureAtlas improperly rendering spritesheet textures?为什么我的 libGDX TextureAtlas 不正确地渲染 spritesheet 纹理?
【发布时间】:2017-04-19 21:26:43
【问题描述】:

在使用 libGDX 时,我注意到有时我绘制到屏幕上的纹理不会被绘制到确切的像素,而是使用来自其他纹理的边缘的微小部分在各个侧面进行绘制(例如,这里头发顶部的单行像素被渲染到玩家脚下)。

当我将游戏缩放到不同大小时,黑线出现在我只能假设是相邻纹理的两侧。

在尝试从 TextureAtlas 文件的文本字段中渲染字体时,我遇到了同样的问题。

我正在使用最近邻从 TextureAtlas 加载这些纹理。这是我的精灵表,这些是我的 TextureAtlas 从精灵表中做出的选择

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 中找到了设置。在窗口的右侧,在“Sprite”下,您可以通过修改“Shape Padding”值来更改每个纹理之间的空间

【问题讨论】:

    标签: java graphics libgdx spritebatch


    【解决方案1】:

    图集被完美切割,但浮点精度在从纹理采样时会导致此问题。解决方案是在图集上的图像之间放置透明空间。如果您使用 TexturePacker,这已经为您完成了。

    【讨论】:

      猜你喜欢
      • 2013-11-09
      • 2014-04-03
      • 2014-10-28
      • 2023-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-24
      • 1970-01-01
      相关资源
      最近更新 更多