glBlendFuncSeparate: Unterschied zwischen den Versionen
(neu erstellt) |
K (→Siehe auch) |
||
(3 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
= glBlendFuncSeparate = | = glBlendFuncSeparate = | ||
− | + | ||
+ | |||
== Name == | == Name == | ||
'''glBlendFuncSeparate''' - setzt getrennte Blending-Faktoren für RGB- und Alphakomponenten. | '''glBlendFuncSeparate''' - setzt getrennte Blending-Faktoren für RGB- und Alphakomponenten. | ||
− | + | ||
+ | |||
== Delphi-Spezifikation == | == Delphi-Spezifikation == | ||
procedure '''glBlendFuncSeparate'''(''sfactorRGB'': TGLenum; ''dfactorRGB'': TGLenum; | procedure '''glBlendFuncSeparate'''(''sfactorRGB'': TGLenum; ''dfactorRGB'': TGLenum; | ||
''sfactorAlpha'': TGLenum; ''dfactorAlpha'': TGLenum); | ''sfactorAlpha'': TGLenum; ''dfactorAlpha'': TGLenum); | ||
− | + | ||
+ | |||
== Parameter == | == Parameter == | ||
{| border=1 rules=all | {| border=1 rules=all | ||
Zeile 29: | Zeile 32: | ||
Defaultwert ist '''GL_ZERO'''. | Defaultwert ist '''GL_ZERO'''. | ||
|} | |} | ||
− | + | ||
+ | |||
== Beschreibung == | == Beschreibung == | ||
Zeile 135: | Zeile 139: | ||
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]]. | 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 == | == Hinweise == | ||
'''glBlendFuncSeparate''' ist erst ab OpenGL Version 1.4 oder höher nutzbar. | '''glBlendFuncSeparate''' ist erst ab OpenGL Version 1.4 oder höher nutzbar. | ||
Zeile 147: | Zeile 152: | ||
Blending ist defaultmässig deaktiviert, kann jedoch mit [[glEnable]]/[[glEnable|glDisable]] und dem Token '''GL_BLEND''' gesteuert werden. | Blending ist defaultmässig deaktiviert, kann jedoch mit [[glEnable]]/[[glEnable|glDisable]] und dem Token '''GL_BLEND''' gesteuert werden. | ||
− | + | ||
+ | |||
== Fehlermeldungen == | == Fehlermeldungen == | ||
'''GL_INVALID_ENUM''' wird generiert, wenn ''sfactorRGB'', ''sfactorAlpha'', ''dfactorRGB'' oder ''dfactorAlpha'' keine gültigen Werte darstellen. | '''GL_INVALID_ENUM''' wird generiert, wenn ''sfactorRGB'', ''sfactorAlpha'', ''dfactorRGB'' oder ''dfactorAlpha'' keine gültigen Werte darstellen. | ||
Zeile 153: | Zeile 159: | ||
'''GL_INVALID_OPERATION''' wird generiert, wenn '''glBlendFuncSeparate''' in einem [[glBegin]]-[[glEnd]] Block aufgerufen wird. | '''GL_INVALID_OPERATION''' wird generiert, wenn '''glBlendFuncSeparate''' in einem [[glBegin]]-[[glEnd]] Block aufgerufen wird. | ||
− | + | ||
+ | |||
== Zugehörige Wertrückgaben == | == Zugehörige Wertrückgaben == | ||
[[glGet]] mit Token [[glGet#GL_BLEND_SRC_RGB|GL_BLEND_SRC_RGB]]<br> | [[glGet]] mit Token [[glGet#GL_BLEND_SRC_RGB|GL_BLEND_SRC_RGB]]<br> | ||
Zeile 162: | Zeile 169: | ||
'''glIsEnabled''' mit dem Argument '''GL_BLEND'''. | '''glIsEnabled''' mit dem Argument '''GL_BLEND'''. | ||
− | + | ||
+ | |||
== Siehe auch == | == Siehe auch == | ||
[[glAlphaFunc]], [[glClear]], [[glBlendColor]], [[glBlendEquation]], [[glBlendFunc]], [[glDrawBuffer]], [[glEnable]], [[glLogicOp]], [[glStencilFunc]] | [[glAlphaFunc]], [[glClear]], [[glBlendColor]], [[glBlendEquation]], [[glBlendFunc]], [[glDrawBuffer]], [[glEnable]], [[glLogicOp]], [[glStencilFunc]] | ||
[[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