Я использую libgdx. Я хочу смоделировать туман в своей игре с помощью растрового изображения, но у меня возникла проблема при создании круга "fogless"
. Сначала я делаю растровое изображение, залитое черным цветом (немного прозрачно). После заполнения я хочу нарисовать на нем закрашенный круг, но результат не тот, который я ожидал.
this.pixmap = new Pixmap(640, 640, Format.LuminanceAlpha);
Pixmap.setBlending(Blending.None); // disable Blending
this.pixmap.setColor(0, 0, 0, 0.9f);
this.pixmap.fill();
//this.pixmap.setColor(0, 0, 0, 0);
this.pixmap.fillCircle(200, 200, 100);
this.pixmapTexture = new Texture(pixmap, Format.LuminanceAlpha, false);
В процедуре render()
public void render() {
mapRenderer.render();
batch.begin();
batch.draw(pixmapTexture, 0, 0);
batch.end();
}
Если я использую Формат. Альфа при создании растрового изображения и текстуры я не вижу более полупрозрачного круга.
Вот моя проблема:
Может ли кто-нибудь помочь мне? Что мне делать, что мне нужно сделать, чтобы нарисовать полный прозрачный круг? Спасибо.
ОБНОВЛЕНИЕ Я нашел решение своей проблемы. Я должен отключить смешивание, чтобы избежать проблемы.
Теперь мой код:
FrameBuffer fbo = new FrameBuffer(Format.RGBA8888, 620, 620, false);
Texture tex = EnemyOnRadar.assetManager.get("data/sugar.png", Texture.class);
batch.begin();
// others
batch.end();
fbo.begin();
batch.setColor(1,1,1,0.7f);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
batch.begin();
batch.draw( tex, 100, 100);
batch.end();
fbo.end();
Но я не вижу круга (это изображение png, представляет собой прозрачный фон, белый закрашенный круг).