Ich versuche, eine Textur mit Alpha zu einem Bildspeicher mit Alpha zu rendern. Ich brauche die Transparenz der Textur, die durch eine Kombination aus ihrem eigenen Alpha und dem bereits in den Bildpuffer gerenderten Alpha gesteuert wird.OpenGL Blending mit Quell-und Ziel Alpha
dh:
Normale Transparenz:
(src_colour * src_alpha) + (dst_colour * 1-src_alpha)
Notwendige Transparenz:
(src_colour * src_alpha * dst_alphe) + (dst_colour * 1- (src_alpha * dst_alpha))
Kann jemand herausfinden, wie man das macht?
Ich habe jetzt :-) 9 Stunden daran gearbeitet
Ich bin mit OpenGL 1.0 mit GL11ExtensionPack auf Android, so habe ich Zugang zu glBlendFunc und glBlendFuncSeparate. Ich würde es vorziehen, die GLES20-Route nicht mit Shadern zu gehen, da dies viel Code zum Umschreiben erfordern würde.
Danke, Andrew
Standard GL Blending unterstützt dies nicht. Shaders auch nicht (in einem einzigen Durchgang). Was versuchst du zu erreichen? Es könnte andere Wege geben. – Bahbar
Das Spiel ist ein vertikal scrollendes Shoot-em-up, von oben betrachtet. Szenen, Raumschiffe, Raketen usw. werden im Vordergrund gerendert, mit einem Himmel und Sternenfeld im Hintergrund. Dann gibt es Details wie Gebäude, die der Szenerie hinzugefügt wurden und Schatten werfen. (Schatten sind in die Texturen eingebacken.) Ich brauche die Schatten, um nur den Vordergrund und nicht den Hintergrund zu beeinflussen. Ich habe dies mit einem Stencil-Buffer erreicht, aber einige der Sprites im Spiel haben Alpha-Transparenz, so dass die binäre Ein/Aus-Lösung des Stencil-Buffers nicht ausreichend war. Die Schatten müssen sich vermischen. –