Java LibGDX纹理在移动时闪烁-似乎没有任何东西可以修复它

Java LibGDX纹理在移动时闪烁-似乎没有任何东西可以修复它,java,libgdx,textures,Java,Libgdx,Textures,当播放器(以及相机)移动时,我会在瓷砖纹理上闪烁。如果瓷砖上有水平线或垂直线,则特别明显。我在其他地方看到,要解决这个问题,我需要将纹理过滤设置为“最近的,最近的”,但不管怎样,这都是默认设置,如果我显式地设置它,也不会解决任何问题 另一个建议是将移动位置四舍五入为整数(这在过去的另一个游戏引擎中对我有效),但似乎对LibGDX没有任何作用。我注意到在这里的另一个回答中,OP说这并不能解决他的问题 我注意到从Github下载的LibGDX游戏源代码中也有纹理闪烁。这对LibGDX来说正常吗?但这

当播放器(以及相机)移动时,我会在瓷砖纹理上闪烁。如果瓷砖上有水平线或垂直线,则特别明显。我在其他地方看到,要解决这个问题,我需要将纹理过滤设置为“最近的,最近的”,但不管怎样,这都是默认设置,如果我显式地设置它,也不会解决任何问题

另一个建议是将移动位置四舍五入为整数(这在过去的另一个游戏引擎中对我有效),但似乎对LibGDX没有任何作用。我注意到在这里的另一个回答中,OP说这并不能解决他的问题

我注意到从Github下载的LibGDX游戏源代码中也有纹理闪烁。这对LibGDX来说正常吗?但这似乎很明显

例如,对于这种类型的平铺,当玩家上下移动时,其上的水平线会闪烁

已尝试:

四舍五入移动到整数


将纹理过滤器设置为不同的设置。

只要使用默认的“摄影机”视口,将摄影机移动取整为整数就可以了,因为在这种情况下,像素将对应于“摄影机像素”,如果使用自定义视口宽度或高度,则需要额外的数学运算,如果宽度/高度比与设备屏幕的宽度/高度比不同,谁知道还会发生什么?我还注意到,垂直/水平线非常小的纹理会出现这种行为。我通过确保摄像机的位置(在屏幕坐标中)是一个整数来解决这个问题。为此,我将摄影机位置乘以屏幕/视口比例,将结果四舍五入,再除以比例:
float ratioX=viewport.getScreenWidth()/viewport.getWorldWidth()
camera.position.x=Math.round(camera.position.x*ratioX)/ratioX您需要对y轴执行相同的操作。我使用的是线性/线性顺便说一句。只要使用默认的摄影机视口,将摄影机移动取整为整数就可以了,因为在这种情况下,像素将对应于“摄影机像素”,如果使用自定义视口宽度或高度,则需要额外的数学运算,如果宽度/高度比与设备屏幕的宽度/高度比不同,谁知道还会发生什么?我还注意到,垂直/水平线非常小的纹理会出现这种行为。我通过确保摄像机的位置(在屏幕坐标中)是一个整数来解决这个问题。为此,我将摄影机位置乘以屏幕/视口比例,将结果四舍五入,再除以比例:
float ratioX=viewport.getScreenWidth()/viewport.getWorldWidth()
camera.position.x=Math.round(camera.position.x*ratioX)/ratioX您需要对y轴执行相同的操作。我使用线性/线性btw。