GIF стоит тысячи слов: https://i.imgur.com/tojuEMl.gifv
Неподвижное изображение:
Эта крошечная серая горизонтальная линия не должна быть там,Но на разрешениях, которые не совпадают с разрешением камеры / области просмотра, эта линия мигает во время и когда спрайт мигает и исчезает.
Новое в LibGDX, так что извините, если я напутал здесь терминологию!В настоящее время я запускаю свою игру с обзором мира 360x640.Когда я запускаю настольную версию с таким точным размером, она работает нормально, без мерцающей линии.
Но когда я меняю разрешение на что-то с с таким же соотношением сторон , как 450x800, илиПри разном соотношении сторон, например, 480х800, спрайты начинают мерцать.Когда спрайт перемещается, над спрайтом появляется горизонтальная линия.Я предполагаю, что это из-за некоторой проблемы, вызванной изменением размера, когда спрайт не рисуется на целочисленном пикселе.
Мой код выглядит примерно так:
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), что тоже странно.