2009-08-05 16 views
2

Was ist die beste Wahl, wenn Sie versuchen, eine Textur wie ColorSplash oder andere Anwendungen wie iSteam, etc. zu maskieren?iPhone OpenGL ES Texture2D Maskierung

Ich begann OPENGL ES lernen wie ... Vor 4 Tagen (ich bin ein totaler Anfänger ) und versuchte, den folgenden Ansatz:

1) ich eine farbige Texture2D erstellt, eine Graustufenversion des ersten Textur und eine dritte Texture2D genannt Maske

2) ich habe auch eine Texture2D für die Bürste ... die Graustufen- und ist es undurchsichtig (Bürste = schwarz = 0,0,0,1 und Umgebung = weiß = 1 , 1,1,1). Meine Absicht war es, eine antialiased Bürste mit glatten Kanten zu schaffen, aber ich bin gut mit einem normalen jetzt

3) I für Maskierungstechniken im Internet gesucht und gefunden diese Tutorial ZeusCMD - Konstruktion und Entwicklung Tutorials: OpenGL ES Programmierung Tutorials - Maskieren über Maskierung. Das Tutorial sagt mir, dass ich Blending verwenden soll, um masking zu erreichen ... zuerst malen, dann maskieren mit glBlendFunc (GL_DST_COLOR, GL_ZERO) und dann Graustufen mit glBlendFunc (GL_ONE, GL_ONE) ... und das gibt mir etwas in der Nähe von was ich will ... aber nicht genau was ich will. Das Ergebnis ist maskiert, aber es ist irgendwie überhell-ed

4) Für i-Puffer ein zusätzlichen Frame-Objekt verwendet, um die Maske Textur Zeichnung (FBO)

ich mit dem resultierenden Bild nicht wirklich glücklich bin (overbright- ed bild) noch mit der mit dieser Methode erreichten Geschwindigkeit. Ich denke, der normale Weg war, direkt auf die Graustufen (Overlay) Textur2D zu zeichnen, die betrifft, nur es ist Alpha-Kanal an den Stellen, wo der Pinsel schlägt. Gibt es einen schnellen Weg, um dies zu erreichen? Ich habe viel gesucht und bekam nie eine Antwort, die klar und verständlich ist. Dann konnte ich in der Hauptziehschleife I nur die farbige Textur zeichnen und dann die Graustufen ontop mit glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) mischen.

Ich möchte nur lernen, OPENGL ES zu verwenden, und es macht mich verrückt, weil ich es nicht richtig funktionieren kann. Ein Ratschlag, ein Link zu einem Tutorial würde sehr geschätzt werden.

Antwort

0

Für etwas, das tatsächlich auf dem iPhone funktioniert, versuchen Sie texture combiners.

Ich benutzte sie, um eine RGBA-Textur gegen eine andere, transformierte Alpha-Textur zu maskieren.
Dies war für die Erstellung eines komplizierten Schatten in Abwesenheit eines Stencil-Puffer,
aber Ihre Situation scheint nicht so anders.

Beachten Sie, dass dieser Link Kombinatoren in Form von Fragment-Shadern erklärt, was gut funktioniert.
Leider sind die Combiner komplizierter als ihre Shader-Pendants.