Ich arbeite an einer malen App für Android, die Benutzer mit ihren Finger zeichnen können. Es wurde mit OpenGL ES 2.0 mit Point-Sprite-Technik sowie einem FBO für schnelles Rendern erstellt. Ich habe ein Problem, bei dem die einzelnen Punktsprites zusammengemischt werden, wo die transparenten Bereiche korrekt auf dem FBO gerendert werden, aber wenn sich die Sprites überlappen, kann ich die transparenten Bereiche sehen, die auf dem vorherigen Sprite gerendert werden. Hier ist, wie es aussieht, zur Zeit:Point Sprite Alpha Blending
Dies ist mit dieser Mischung Gleichung:
GLES20.glBlendFunc(GLES20.GL_ONE, GLES20.GL_ONE_MINUS_SRC_ALPHA);
Wenn ich die Zeichenfarbe auf weiß oder schwarz ändern es funktioniert perfekt:
Ich habe auch diese Mischfunktion ausprobiert:
GLES20.glBlendFunc(GLES20.GL_SRC_ALPHA, GLES20.GL_DST_ALPHA);
, die in diesen Ergebnisse:
die fast perfekt ist, sondern auf Weiß die Hauptfarbe verdunkeln sollte. Irgendwelche Ideen, was die richtige Blending-Funktion sein sollte, um dies zu erreichen?
Hinweis: Ich habe eine Vorstellung davon, wie die Mischfunktion funktioniert durch die Fraktionen der Quell- und Zielfarbe und in meinem Fall nehmen sie zusammen Zugabe so macht es Sinn, dass die Farbe in Richtung Weiß gehen würde. Ich frage mich also, ob das, was ich erreichen möchte, nur mit der Blending-Funktion erreicht werden kann oder brauche ich etwas anderes? Ich kann zwar Code aus dem Fragment-Shader bereitstellen, aber es sieht für mich nicht wie ein Fragment-Problem aus.