Ich versuche, ein Hintergrundbild zu maskieren, das kleiner als die Maske ist. und der Abstand zwischen dem Hintergrund und der Maske erscheint schwarz.Maskierung Bild, das Alpha enthält, macht die innere Maske schwarz
Dies ist der Code ich benutze:
batch.end();
batch.begin();
Gdx.gl20.glColorMask(false, false, false, true);
batch.setBlendFunction(GL20.GL_ONE, GL20.GL_ZERO);
batch.draw(mask, getX(), getY());
batch.flush();
Gdx.gl20.glColorMask(true, true, true, true);
batch.setBlendFunction(GL20.GL_DST_ALPHA, GL20.GL_ONE_MINUS_DST_ALPHA);
batch.draw(texture, getX(), getY());
batch.flush();
batch.setBlendFunction(GL20.GL_SRC_ALPHA,GL20.GL_ONE_MINUS_SRC_ALPHA);
batch.end();
batch.begin();
Ich habe versucht, alle Art Funktionskombinationen ohne Erfolg. Vermutlich vermisse ich etwas.
aktualisieren
Anbringen Diagramm, das ich von allen möglichen (relevanten) Ergebnisse von src und dst Blending-Funktion aufzubauen. Glücklicherweise funktioniert keiner der unten genannten Punkte, und wie ich vermutete, muss noch etwas getan werden, um das Ergebnis zu erreichen.
Gdx.gl20.glColorMask(true, true, true, true);
batch.setBlendFunction(src_func, dst_func);
batch.draw(texture, getX(), getY());
Dies ist eine sehr detaillierte und informative Frage. – Programmer