Java 为什么相机移动时纹理会闪烁?
我实现了一个随播放器一起移动的俯视摄像头,使用Java 为什么相机移动时纹理会闪烁?,java,opengl,camera,libgdx,Java,Opengl,Camera,Libgdx,我实现了一个随播放器一起移动的俯视摄像头,使用camera.position.lerp只会稍微慢一点。问题是纹理有点闪烁,因为我缩放了纹理。如果我使用正常大小的纹理,闪烁就会停止。有没有人对如何在不使纹理闪烁(或闪烁)的情况下通过缩放(或纹理缩放-相同的事情)移动相机有什么想法?我使用线性过滤并从atlas加载每个资产。我在多个论坛上看到这个问题,但没有答案。我想加载更高分辨率的纹理并在代码中调整它们的大小,这就是为什么我要问这个问题。您需要在atlas中挤出精灵的边界。“挤出”选项倾向于接近填
camera.position.lerp
只会稍微慢一点。问题是纹理有点闪烁,因为我缩放了纹理。如果我使用正常大小的纹理,闪烁就会停止。有没有人对如何在不使纹理闪烁(或闪烁)的情况下通过缩放(或纹理缩放-相同的事情)移动相机有什么想法?我使用线性过滤并从atlas加载每个资产。我在多个论坛上看到这个问题,但没有答案。我想加载更高分辨率的纹理并在代码中调整它们的大小,这就是为什么我要问这个问题。您需要在atlas中挤出精灵的边界。“挤出”选项倾向于接近填充选项
大多数纹理打包程序都支持该功能,Libgdx将直接从atlas
文件中获取该信息
这样就可以使用所需的过滤器。纹理的最小过滤器应该是MipmapLinearLinear或至少是mipmaplinearest。这应该会有很大帮助。闪烁是无处不在,还是只发生在精灵的边缘?是的,这就是问题所在。滤波线性与MipMapLinear不同。我切换了它,现在我没有闪烁。同时将过滤器更改为MipMapLinearLinear会模糊纹理。这是副作用吗?如果你的问题和我想的一样,那闪烁实际上是高频噪音。当采样图像在某个位置有太多可能的纹理可供选择时,就会发生这种情况。相机角度的微小差异将改变为线性纹理过滤一起平均的4个纹理的簇。Mipmapping通过创建较低分辨率的图像来改变这一点,以便在更远的距离进行缩小。你可能会认为它是模糊的,但从技术上说,它是一种抗锯齿的形式。谢谢你的帮助。在这两篇文章的帮助下,我修复了两个问题。但我还有一个(我希望这是最后一个)。正如您所知,我正在使用lerp移动摄影机,但是对于alpha值0.5或更低,这会给摄影机带来缓慢的效果,当视图非常接近目标时,它会抖动。我知道这是因为alpha值太小,但是如果我把它调大,相机移动得太快。有没有办法做一个更好的插值,使相机移动得比播放器慢一点?编辑:抖动在Y轴上更明显。我在libGDX纹理打包机上找不到挤出选项。它可能没有这样的选项。在libGDX TexturePacker中,它只是一个复选框,上面写着“重复填充”。但是看起来你的闪烁更多的是因为没有使用mipmap。不过,您也需要这样做。