私はShapeRenderer
を使って各フレームにいくつかの線を描いています。各フレームで、前のフレームの上に描きたい、額、フレームで色あせています。 私がやっていることは、まずアルファが1未満の黒い矩形を描き、現在のフレームを描画することです。デスクトップでそれがうまく機能し、その結果がこのAndroid上のLibGdx `ShapeRenderer`はアルファチャンネルを受け入れません
のようなものですが、Androidの上では動作しません。このようにレンダリングされます。私は矩形
Gdx.gl.glEnable(GL20.GL_BLEND);
Gdx.gl.glBlendFunc(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA);
を描画する前に混合を可能にする試み
はまた、これらの 何も働いていない(config.a = 8
)AndroidApplicationConfiguration
8ビットアルファチャンネルをSETING試みました。それ以外に何ができますか? また、私が望むものを達成するためのよりよい方法がありますか?
スクリーンコード
package com.waterpaw.trochoids.screen;
import java.util.ArrayList;
import java.util.List;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Input.Keys;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.glutils.ShapeRenderer;
import com.badlogic.gdx.utils.viewport.ScreenViewport;
import com.waterpaw.trochoids.Trochoid;
import com.waterpaw.trochoids.Trochoids;
public class GameScreen extends BaseScreen {
private ShapeRenderer sr;
private ScreenViewport viewport;
private List<Trochoid> trochoids = new ArrayList<Trochoid>();
public GameScreen(Trochoids game) {
super(game);
viewport = new ScreenViewport();
Gdx.input.setInputProcessor(this);
sr = new ShapeRenderer();
}
private int resized;
@Override
public void resize(int width, int height) {
viewport.update(width, height);
trochoids.clear();
trochoids.add(new Trochoid(viewport.getWorldWidth(), viewport.getWorldHeight()));
resized = 2;
}
@Override
public void render(float delta) {
if(resized-- > 0) {
Gdx.gl.glClearColor(0f, 0f, 0f, 0f);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
}
processInput();
if(!trochoids.get(0).isPaused()) {
updateTrochoids();
renderTrochoids();
}
}
private void processInput() {
if(Gdx.input.isKeyJustPressed(Keys.P)) {
if(trochoids.get(0).isPaused()) {
trochoids.get(0).unpause();
} else {
trochoids.get(0).pause();
}
} else if(Gdx.input.isKeyJustPressed(Keys.SPACE)) {
touchDown(0, 0, 0, 0);
}
}
@Override
public void dispose() {
sr.dispose();
}
@Override
public boolean touchDown(int x, int y, int pointer, int button) {
trochoids.get(0).initialize();
return true;
}
public void renderTrochoids() {
sr.setProjectionMatrix(viewport.getCamera().combined);
float w = viewport.getWorldWidth();
float h = viewport.getWorldHeight();
sr.setColor(0, 0, 0, 0.1f);
sr.begin(ShapeRenderer.ShapeType.Filled);
sr.rect(-w/2, -h/2, w, h);
sr.end();
sr.begin(ShapeRenderer.ShapeType.Line);
for(int i = 0; i < trochoids.size(); i++) {
trochoids.get(i).render(sr);
}
sr.end();
}
private void updateTrochoids() {
for(int i = 0; i < trochoids.size(); i++) {
trochoids.get(i).update();
}
}
}
描画バッファ(またはフレームバッファ)の内部フォーマットにはアルファチャンネル(RGBAではなくRGB)がありますか? – Rabbid76
@ Rabbid76どうすればわかりますか? config.a = 8を設定してこの問題を解決してはいけませんか? – alfoks
設定の4色すべてを8に設定します。電話機は、特定の組み合わせの組み合わせのみをサポートします。 5658はほとんど確かにそれらの1つではないので、LibGDXはあなたのために選ぶ必要があり、それは予測不可能なことがあります。しかし、それはあなたの問題ではありません。 – Tenfour04