libgdx tilesmap flicker with Nearest filtering

时间:2013-09-24 14:51:25

标签: camera libgdx

我在平铺地图上有奇怪的文物,同时用相机夹在播放器上滚动(谁是box2d-Body)。

在得到这个问题之前,我使用了tilemap的线性过滤器,它可以防止那些奇怪的文物发生,但会导致纹理出血(我直接从.tmx文件加载了tilemap而没有填充图块)。

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

是否有人遇到此问题或知道如何解决此问题? :)

2 个答案:

答案 0 :(得分:2)

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

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

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

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

尝试使用各种值,但我通过使用tile大小作为scalePosition值来实现它。

答案 1 :(得分:1)

关于tilesets,我在此处发布了一个解决方案:Getting gaps between tiled textures with libgdx

我一直在使用Tiled本身的方法。在Tiled中导入tilesets时,您必须调整“margin”和“spacing”以使效果有效。

100%为我工作:)