Verwenden Sie die folgende Einstellung für den OpenGL-Partikeleffekt:
SRC: GL_SRC_ALPHA
DST: GL_ONE
Erzeugt eine additive Mischung, die auf einem schwarzen Hintergrund spektakulär aussieht, auf helleren Farben jedoch furchtbar ist, da sie allmählich in Weiß übergeht.
Ich habe dann Alpha Blending verwendet:
SRC: GL_SRC_ALPHA
DST: GL_ONE_MINUS_SRC_ALPHA
Auf diese Weise können andere Hintergründe verwendet werden, ohne die Farbe der Partikel zu beeinträchtigen. Die Partikel selbst sehen jedoch im Vergleich zur Additivmischung matt aus. Wie kann ich mit Alpha Blending und Partikeln einen guten Feuereffekt erzielen?
Zusatzstoff:
Alpha:
AKTUALISIEREN:
Nach Davids Ratschlägen erstellte ich eine separate Textur und verwendete dann eine additive Mischung für den Partikeleffekt, bevor ich auf die Textur zeichnete. Das Problem dabei ist, dass beim Zeichnen auf eine Alpha = 0-Textur nur die farbigen Teile des Partikels vor meiner Weltkarte angezeigt wurden, da Sie normalerweise einen schwarzen Hintergrund haben. Der Trick bestand darin, zwei Texturen zu verwenden. Ich habe eine schwarze Textur erstellt und dann die Partikel darauf gezeichnet. Dann entfernte ich die Alpha-Schicht der Partikel von dieser Textur, entfernte effektiv das gesamte umgebende Vollschwarz und verblasste die teilweise sichtbaren Partikel, während das darunterliegende Schwarz so zurückblieb, wie Sie es erwarten würden, wenn additive Mischpartikel auf einem schwarzen Hintergrund erzeugt würden. Kurz gesagt, ein anstrengender Prozess, aber irgendwann habe ich es geschafft:
Hier ist der Thread, in dem ich meinen Prozess gepostet habe: http://www.cocos2d-iphone.org/forum/topic/28707?replies=8#post-141528
Schauen Sie sich das vormultiplizierte Alpha an.
http://blogs.msdn.com/b/shawnhar/archive/2009/11/07/premultiplied-alpha-and-image-composition.aspx
quelle
Wie David Gouveia betonte, gibt es keinen zufriedenstellenden Ersatz für das additive Mischen auf hellem Hintergrund. Der beste Effekt, den ich gefunden habe (für den kein Rendern in einem Backbuffer erforderlich ist), ist die Verwendung des folgenden GL-Mischmodus:
Es ist nicht so schön wie das additive Mischen, aber viel besser als
GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA
. Wenn Sie die Start- und Endwerte für Alpha und Farbe ein wenig verändern, erhalten Sie möglicherweise Ergebnisse, die dem additiven Mischen sehr nahe kommen.Im Bild oben ist
GL_SRC_ALPHA, GL_ONE
links, in der MitteGL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA
und rechts der Mischmodus zu sehen, den ich für dieses Setup vorschlagen würde.quelle
Haben Sie versucht, beide zu verwenden? Tragen Sie einige Partikel mit Alpha-Blending auf, damit Ihre Farben so aussehen, wie Sie es möchten, und kommen Sie dann mit einem additiven Blending zurück, um das gewünschte Highlight zu erzielen.
quelle
Zunächst einmal scheinen die Partikelbilder, die Sie verwenden, einen schwarzen Hintergrund zu haben, was zu den dunklen Rändern in diesem zweiten Bild führt. Mach das nicht; Zeichnen Sie also nicht die Form des Partikels in den Farbkanälen. Stattdessen sollte das Bild einfarbig sein und nur die Form im Alphakanal definieren.
Dadurch wird das Erscheinungsbild der Alpha-Transparenz erheblich verbessert. Dann können Sie das Aussehen des Gesamteffekts weiter verbessern, indem Sie die Partikel im Laufe ihrer Lebensdauer farblich verändern lassen. Das Grundbild ist sehr hell und gibt Ihnen den zentralen, hellgelben Bereich. Dann färben Sie die Partikel rötlich-orange und erhöhen die Färbung im Laufe der Zeit. Auf diese Weise werden die Partikel dunkler, wenn sie sich aus der Mitte herausbewegen.
quelle