opengl - blending mit dem vorherigen Inhalt des framebuffer

Ich bin Rendern in eine textur über ein framebuffer-Objekt, und wenn ich zeichne transparenten primitive die primitive vermischt werden, die ordnungsgemäß mit anderen primitiven gezeichnet, single draw Schritt, aber Sie werden nicht verschnitten richtig mit dem vorherigen Inhalt des Framebuffers.

Gibt es einen Weg, um richtig mischen die Inhalte der Struktur mit den neuen Daten kommen?

EDIT: Mehr Informationen requsted, ich werde zu erklären versuchen, mehr klar;

Den blendmode ich verwende, ist GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA. (Ich glaube, das ist in der Regel die standard-blendmode)

Bin ich erstellen, eine Anwendung, die Spuren der Maus-Bewegung. Es zieht Verbindungslinien von der vorherigen position der Maus an der aktuellen Mauszeiger-position, und da ich nicht wollen, ziehen die Linien wieder jeden Rahmen, ich dachte, ich würde zeichnen Sie auf eine textur, nie klar, die textur und dann ziehen Sie einfach ein Rechteck mit textur, um es anzuzeigen.

Das alles funktioniert gut, außer, dass wenn ich zeichne Formen mit alpha weniger als 1 auf die textur, ist es nicht mischen richtig mit der textur der vorherigen Inhalte. Sagen wir, ich habe einige schwarze Linien mit alpha = .6 gezogen auf die textur. Ein paar ziehen Zyklen später habe ich dann zeichnen Sie einen schwarzen Kreis mit alpha = .4 über diesen Zeilen. Die Zeilen "unterhalb" der Kreis vollständig überschrieben. Obwohl der Kreis ist eben nicht schwarz (Es verschmilzt richtig mit dem weißen hintergrund) es gibt keine "dunkler Linien" unter dem Kreis, wie man es erwarten würde.

Wenn ich zeichnen Sie die Linien und den Kreis im gleichen Rahmen, aber Sie mischen richtig mit. Meine Vermutung ist, dass die textur nur nicht mischen mit seinem bisherigen Inhalt. Es ist wie es ist nur die Vermischung mit der glclearcolor. (In diesem Fall ist <1.0 f, 1.0 f, 1.0 f, 1.0 f>)

InformationsquelleAutor der Frage staticfloat | 2010-01-31

Schreibe einen Kommentar