【问题标题】:libgdx tiledmap flicker with Nearest filtering带有最近过滤的 libgdx tiledmap 闪烁
【发布时间】:2013-09-29 20:47:58
【问题描述】:

在将相机夹在玩家(box2d-Body)上滚动时,我在平铺地图上出现了奇怪的伪影。

在遇到这个问题之前,我使用线性过滤器处理平铺贴图,它可以防止那些奇怪的伪影发生,但会导致纹理溢出(我直接从 .tmx 文件加载平铺贴图而不填充平铺)。

但是现在我使用的是最近的过滤器,它可以消除流血,但是当滚动地图时(通过在夹着凸轮的情况下行走角色),接缝处好像有很多像素在闪烁。闪烁结果可能会变得更好或更糟,具体取决于相机的缩放值。 但是当我使用 libgdx-Utilities 中的“OrthoCamController”类时,它允许通过用鼠标/手指平移来滚动地图,我根本没有得到这些工件。 我认为闪烁可能是由 box2d-Body 位置接收到的错误相机位置值引起的。 我应该在这里添加一件事:游戏实例以 1280*720 显示模式运行,而我的游戏摄像机仅渲染 800*480。我将游戏摄像头的渲染解决方案更改为 1280*720,但我没有得到那些伪像,但瓷砖太小了。

有没有人遇到过这个问题或知道如何解决这个问题? :)

【问题讨论】:

    标签: camera libgdx


    【解决方案1】:

    我遇到了类似的问题,发现这是由于相机位置的十进制值太小。

    我认为可能发生的情况是在 tilemap 渲染器中对某些 tile 列/行进行了某种舍入。

    我通过四舍五入到设定的精度来解决这个问题,如下所示:

    camera.position.x = Math.round(player.entity.getX() * scalePosition) / scalePosition;
    

    用各种值进行实验,但我通过使用图块大小作为 scalePosition 值来实现它。

    【讨论】:

    • 这对我有用,我在输入相机时将浮动位置转换为整数
    【解决方案2】:

    关于tileset,我在这里贴了一个解决方案:Getting gaps between tiled textures with libgdx

    我一直在使用 Tiled 本身的方法。在 Tiled 中导入瓦片集时,您必须调整“margin”和“spacing”才能使效果生效。

    它 100% 为我工作 :)

    【讨论】:

      猜你喜欢
      • 2013-12-13
      • 1970-01-01
      • 2011-11-04
      • 1970-01-01
      • 2016-05-18
      • 1970-01-01
      • 2013-01-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多