价值一千个字的GIF:https://i.imgur.com/tojuEMl.gifv
静止图像:
那条微小的灰色水平线不应该在那里。但是,在与摄影机/视口分辨率不同的分辨率上,当精灵移动时,该线会忽隐忽现。
LibGDX的新手,如果我在这里弄乱了术语,对不起!我目前正在以360x640的世界视口运行我的游戏。当我以该确切大小运行桌面版本时,它可以正常工作,没有闪烁的线条。
但是当我将分辨率更改为具有相同宽高比(例如450x800)或不同宽高比(例如480x800)的东西时,子画面会开始闪烁。随着精灵移动,精灵上方会出现一条水平线。我的猜测是,这是由于调整大小而导致的某个问题,从而导致Sprite不会在整数像素上绘制。
我的代码如下:
float WIDTH = 360;
float HEIGHT = 640;
this.camera.position.set(WIDTH, HEIGHT / 2, 0);
this.spriteBatch = new SpriteBatch();
this.entities.add(new PlayerCharacter(WIDTH / 2, HEIGHT / 2));
this.viewport = new FitViewport(WIDTH, HEIGHT, this.camera);
this.viewport.apply(true);
是否有一种方法可以强制渲染不达到小数点像素值并且始终舍入(向下)?还是用另一种方法来消除缩放到略有不同的宽高比时的闪烁?
相关:我认为FitViewport应该始终保持宽高比。似乎是这样做的-当我更改为480x800时,侧面出现黑条。那么为什么它仍然存在闪烁的问题?
编辑:不确定,但是这可能仅在桌面版本上发生。我构建了一个APK,尽管我在具有相同分辨率(LG G4为16:9)的手机侧面出现黑条,这似乎也没有什么问题。