LibGDX - при масштабировании у спрайтов появляется мерцающая линия при перемещении - PullRequest
0 голосов
/ 24 сентября 2018

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), что тоже странно.

...