glBlendFuncSeparate: Unterschied zwischen den Versionen
DGLBot (Diskussion | Beiträge) K (Bot: konvertiere/korrigiere <BR>) |
K (→Siehe auch) |
||
(2 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 32: | Zeile 32: | ||
Defaultwert ist '''GL_ZERO'''. | Defaultwert ist '''GL_ZERO'''. | ||
|} | |} | ||
− | + | ||
+ | |||
== Beschreibung == | == Beschreibung == | ||
Zeile 174: | Zeile 175: | ||
[[Kategorie:GL|BlendFuncSeparate]] | [[Kategorie:GL|BlendFuncSeparate]] | ||
+ | [[Kategorie:GL1.4|BlendFuncSeparate]] | ||
+ | [[Kategorie:GL3|BlendFuncSeparate]] |
Aktuelle Version vom 21. Februar 2014, 17:50 Uhr
Inhaltsverzeichnis
glBlendFuncSeparate
Name
glBlendFuncSeparate - setzt getrennte Blending-Faktoren für RGB- und Alphakomponenten.
Delphi-Spezifikation
procedure glBlendFuncSeparate(sfactorRGB: TGLenum; dfactorRGB: TGLenum; sfactorAlpha: TGLenum; dfactorAlpha: TGLenum);
Parameter
sfactorRGB | Gibt den Rot-, Grün- und Blauanteil des Quell-Blendfaktors an. Folgende symbolische Konstanten sind erlaubt : GL_ZERO, GL_ONE, GL_SRC_COLOR, GL_ONE_MINUS_SRC_COLOR, GL_DST_COLOR, GL_ONE_MINUS_DST_COLOR, GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_DST_ALPHA, GL_ONE_MINUS_DST_ALPHA, GL_CONSTANT_COLOR, GL_ONE_MINUS_CONSTANT_COLOR, GL_CONSTANT_ALPHA, GL_ONE_MINUS_CONSTANT_ALPHA und GL_SRC_ALPHA_SATURATE.
Defaultwert ist GL_ONE. |
---|---|
dfactorRGB | Gibt den Rot-, Grün- und Blauanteil des Ziel-Blendfaktors an. Folgende symbolische Konstanten sind erlaubt : GL_ZERO, GL_ONE, GL_SRC_COLOR, GL_ONE_MINUS_SRC_COLOR, GL_DST_COLOR, GL_ONE_MINUS_DST_COLOR, GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_DST_ALPHA, GL_ONE_MINUS_DST_ALPHA, GL_CONSTANT_COLOR, GL_ONE_MINUS_CONSTANT_COLOR, GL_CONSTANT_ALPHA, GL_ONE_MINUS_CONSTANT_ALPHA und GL_SRC_ALPHA_SATURATE.
Defaultwert ist GL_ZERO. |
sfactorAlpha | Gibt den Alphaanteil des Quell-Blendfaktors an. Folgende symbolische Konstanten sind erlaubt : GL_ZERO, GL_ONE, GL_SRC_COLOR, GL_ONE_MINUS_SRC_COLOR, GL_DST_COLOR, GL_ONE_MINUS_DST_COLOR, GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_DST_ALPHA, GL_ONE_MINUS_DST_ALPHA, GL_CONSTANT_COLOR, GL_ONE_MINUS_CONSTANT_COLOR, GL_CONSTANT_ALPHA, GL_ONE_MINUS_CONSTANT_ALPHA und GL_SRC_ALPHA_SATURATE.
Defaultwert ist GL_ONE. |
dfactorAlpha | Gibt den Alphaanteil des Ziel-Blendfaktors an. Folgende symbolische Konstanten sind erlaubt : GL_ZERO, GL_ONE, GL_SRC_COLOR, GL_ONE_MINUS_SRC_COLOR, GL_DST_COLOR, GL_ONE_MINUS_DST_COLOR, GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_DST_ALPHA, GL_ONE_MINUS_DST_ALPHA, GL_CONSTANT_COLOR, GL_ONE_MINUS_CONSTANT_COLOR, GL_CONSTANT_ALPHA, GL_ONE_MINUS_CONSTANT_ALPHA und GL_SRC_ALPHA_SATURATE.
Defaultwert ist GL_ZERO. |
Beschreibung
glBlendFuncSeparate ist eine Erweiterung von glBlendFunc und erlaubt es, für RGB- und Alphakomponenten getrennte Blendfaktoren für die momentan gesetzte Blendfunktion (glBlendFunc) anzugeben.
sfactorRGB und sfactorAlpha geben dabei an, welche Faktoren benutzt werden, um die Quellfarbkomponenten zu skalieren. dfactorRGB und dfactorAlpha geben an, welche der Faktoren benutzt werden, um die Zielfarbkomponenten zu skalieren. Die möglichen Faktoren werden in der folgenden Tabelle beschrieben, wobei sfactorRGB und dfactorRGB insgesamt drei Skalierungsfaktoren für die drei Komponenten einer RGB-Farbe besitzen, während sfactorAlpha und dfactorAlpha nur eine Komponente für den Alphakanal benötigt.
In der Tabelle (und allen folgenden Gleichungen), werden Quell- bzw. Zielfarbkomponenten als (Rs, Gs, Bs, As) und (Rd, Gd, Bd, Ad) dargestellt. Diese Komponenten besitzen Ganzzahlwerte, die zwischen 0 und (kR, kG, kB, kA) liegen, wobei
kc = 2^mc - 1;
und (mR, mG, mB, mA) gleich der Anzahl der Rot-, Grün-, Blau- und Alphabits ist.
Die mit (Rc, Gc, Bc, Ac) bezeichneten Farbkomponenten sind diejenigen, die vor dem Aufruf von glBlendFuncSeparate mit glBlendColor gesetzt wurden. (Rc, Gc, Bc, Ac) werden nicht mit (kR, kG, kB, kA) skaliert, da sie bereits im Intervall [0,1] liegen.
Quell- und Zielskalierungsfaktoren werden als (sR, sG, sB, sA) und (dR, dG, dB, dA) angegeben. Die in der Tabelle beschriebenen Skalierungsfaktoren, angegeben als (fR, fG, fB) und fA, repräsentieren entweder Quell- oder Zielfaktoren der RGB- und Alphakomponenten. Alle Skalierungsfaktoren liegen im Intervall [0,1].
Parameter | (fR, fG, fB) | fA |
GL_ZERO | (0, 0, 0) | 0 |
GL_ONE | (1, 1, 1) | 1 |
GL_SRC_COLOR | (Rs/kR, Gs/kG, Bs/kB) | As/kA |
GL_ONE_MINUS_SRC_COLOR | (1, 1, 1) - (Rs/kR, Gs/kG, Bs/kB) | 1 - As/kA |
GL_DST_COLOR | (Rd/kR, Gd/kG, Bd/kB) | Ad/kA |
GL_ONE_MINUS_DST_COLOR | (1, 1, 1) - (Rd/kR, Gd/kG, Bd/kB) | 1 - Ad/kA |
GL_SRC_ALPHA | (As/kA, As/kA, As/kA) | As/kA |
GL_ONE_MINUS_SRC_ALPHA | (1, 1, 1) - (As/kA, As/kA, As/kA) | 1 - As/kA |
GL_DST_ALPHA | (Ad/kA, Ad/kA, Ad/kA) | Ad/kA |
GL_ONE_MINUS_DST_ALPHA | (1, 1, 1) - (Ad/kA, Ad/kA, Ad/kA) | 1 - Ad/kA |
GL_SRC_ALPHA_SATURATE | (i, i, i) | 1 |
GL_CONSTANT_COLOR | (Rc, Gc, Bc) | Ac |
GL_ONE_MINUS_CONSTANT_COLOR | (1, 1, 1, 1) - (Rc, Gc, Bc) | 1 - Ac |
GL_CONSTANT_ALPHA | (Ac, Ac, Ac) | Ac |
GL_ONE_MINUS_CONSTANT_ALPHA | (1, 1, 1) - (Ac, Ac, Ac) | 1 - Ac |
In der Tabelle ist
i = min(As, kA - Ad) /kA
Um die gemischten RGBA-Werte eines Pixels im RGBA-Modus zu ermitteln, nutzt das System standardmäßig folgende Gleichungen :
Rd = min(kR, RssR + RddR) Gd = min(kG, GssG + GddR) Bd = min(kB, BssB + BddB) Ad = min(kA, AssB + AddA)
Trotz der offensichtlichen Präzision obiger Gleichungen, ist die Blendarithmetik aufgrund Blendoperationen mit unpräzisen Ganzzahlwerten nicht exakt spezifiziert. Bei einem Blendfaktor von 1 ist jedoch garantiert, dass dieser seinen Wert nicht verändert, und ein Blendfaktor gleich 0 setzt seinen Wert auf 0. Wenn sfactorAlpha z.B. GL_SCR_ALPHA ist, und dfactorAlpha gleich GL_ONE_MINUS_SRC_ALPHA, dann ist As gleich kA, und die Funktionen können auf ihre einfache Entsprechung reduziert werden :
Rd = Rs Gd = Gs Bd = Bs Ad = As
Ab GL Version 1.2 oder falls die Erweiterung für Blendfunktionen vorhanden ist, werden die gemischten RGBA-Werte abhängig von der definierten Blendfunktion gesetzt. Siehe dazu glBlendEquation.
Hinweise
glBlendFuncSeparate ist erst ab OpenGL Version 1.4 oder höher nutzbar.
Der Alpha-Eingangswert (Quelle) kann im Endeffekt als Materialdurchlässigkeit betrachtet werden, von KA = 1, also komplett solide, bis KA= 0 reichend, was ein komplett transparentes (=unsichtbares) Material darstellen würde.
Wenn mehr als ein Farbpuffer zum Rendern aktiv ist, wird GL unter Nutzung des entsprechenden Pufferinhaltes als Zielkomponente für jeden dieser Puffer ein eigenes Blending durchführen. Siehe glDrawBuffer.
Blending funktioniert nur im RGBA-Modus, nicht jedoch im Farbindex-Modus.
Blending ist defaultmässig deaktiviert, kann jedoch mit glEnable/glDisable und dem Token GL_BLEND gesteuert werden.
Fehlermeldungen
GL_INVALID_ENUM wird generiert, wenn sfactorRGB, sfactorAlpha, dfactorRGB oder dfactorAlpha keine gültigen Werte darstellen.
GL_INVALID_OPERATION wird generiert, wenn glBlendFuncSeparate in einem glBegin-glEnd Block aufgerufen wird.
Zugehörige Wertrückgaben
glGet mit Token GL_BLEND_SRC_RGB
glGet mit Token GL_BLEND_SRC_ALPHA
glGet mit Token GL_BLEND_DST_RGB
glGet mit Token GL_BLEND_DST_ALPHA
glGet mit Token GL_BLEND_COLOR
glIsEnabled mit dem Argument GL_BLEND.
Siehe auch
glAlphaFunc, glClear, glBlendColor, glBlendEquation, glBlendFunc, glDrawBuffer, glEnable, glLogicOp, glStencilFunc