LIBGDX - Как избавиться от эффекта полос на градиентном фоне? - PullRequest
0 голосов
/ 27 декабря 2018

У меня проблемы с полосами текстур, связанных с градиентом, в моей игре, и я не могу понять, в чем причина и как ее решить.

Вот о чем я говорю: слева - градиент в моей игре, а справа - градиент, сгенерированный в приложении генератора градиентов (Tint).Мы можем ясно видеть проблемы с полосами.

image image

To create my gradient, I used this code to generate a Texture used to create an Image that I scale to fill the user's screen.

Pixmap pix = new Pixmap(2, 2, Pixmap.Format.RGBA8888);
pix.setColor(colorSchemes[backgroundColorScheme.ordinal()].getTopColor());
pix.fillRectangle(0,0,2,1);
pix.setColor(colorSchemes[backgroundColorScheme.ordinal()].getBottomColor());
pix.fillRectangle(0,1,2,1);

Texture texture = new Texture(pix);
texture.setFilter(Texture.TextureFilter.Linear, 
Texture.TextureFilter.Linear);
pix.dispose();

I also have another issue with banding when I try to add туманоподобные актеры поверх фона, чтобы немного оживить его.Я масштабирую их, изменяю их непрозрачность и перемещаю их, и снова у меня возникают проблемы с полосами, как показано на рисунке ниже.

image

I am trying to replicate a background effect like in this game https://www.youtube.com/watch?v=_vBczzj3NAU

У меня есть этот код в цикле рендеринга экрана рендеринга:

@Override
public void render (float delta) {
    Gdx.gl.glClearColor(0,0,0, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT);
    Gdx.gl.glEnable(GL20.GL_BLEND);
    Gdx.gl.glBlendFunc(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA);
}

Есть идеи, как мне решить эти проблемы?Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 29 декабря 2018

Увеличение количества бит на канал цвета (я считаю, что по умолчанию 5 бит) до 8 бит исправило проблему с полосами для меня.

В AndroidLauncher.java

AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();
config.r = config.g = config.b = config.a = 8;

ВDesktopLauncher.java

LwjglApplicationConfiguration config = new LwjglApplicationConfiguration();
config.r = config.g = config.b = config.a = 8;
...