Ich bin verwirrt, was genau das bedeutet:
Beim Mischen für einen bestimmten Puffer wird die Farbe aus der Fragmentausgabe als Quellfarbe bezeichnet. Die aktuell im Puffer befindliche Farbe wird als Zielfarbe bezeichnet.
Ich verstehe, was die Blending-Gleichung selbst ist, aber ich verstehe nicht ganz den Unterschied zwischen Quellfarbe und Zielfarbe .
Kann jemand ein Beispiel oder eine genauere Definition geben?
Um es kurz und einfach zu halten:
glColor4f(...)
verwenden, legen Sie die Quellfarbe der Operation fest. Normalerweise ist der Grund, warum man verwendet:
%Vor%Dies ist, weil Sie den Alpha-Wert verwenden möchten, den Sie gerade geliefert haben. Sie verwenden es, um Ihre aktuelle Farbe zu multiplizieren, und verwenden Sie dann (1 - Alpha) und verwenden Sie es, um die aktuelle Farbe des Puffers in dieser Koordinate zu multiplizieren.
Wenn Sie also ein Quad mit glColor4f (1.0f, 1.0f, 1.0f, 0.6f) malen und der Puffer mit glColor4f (1.0f, 0.0f, 0.0f, 1.0f) gefüllt wird, wird die letzte Operation ausgeführt sei:
%Vor%Also ist die endgültige Farbe (1.0f, 0.6f, 0.6f)
In Desktop-OpenGL kann der Fragment-Shader mehrere Farben ausgeben , nicht nur einen. Jede Farbe ist nummeriert, und jede dieser Zahlen wird einem Ausgabepuffer im Framebuffer zugeordnet, basierend auf glDrawBuffers
.
Das Mischen erfolgt unabhängig zwischen der Ausgangsfarbe jedes Fragment-Shaders und der aktuell im Zielbild gespeicherten Farbe. Wenn Sie also zwei Farben schreiben, würde das Mischen zwischen der ersten Farbe und ihrem Bild und dann zwischen der zweiten Farbe und ihrem Bild stattfinden.
Für jede Mischoperation ist die Quellfarbe die Farbe, die der Fragment-Shader in die Ausgabevariable geschrieben hat. Die Zielfarbe ist die Farbe aus dem Framebuffer-Bild, die der jeweiligen Fragment-Shader-Ausgabe entspricht (basierend auf dem glDrawBuffers
-Mapping). Die Quellfarbe (n) stammen also vom Fragment-Shader und die Zielfarben stammen aus dem / den Framebuffer-Bild (er).
Tags und Links opengl