gl.Fog(pname, param)
#GL_FOG
auf.
gl.Fog()
weist dem durch pname
angegebenen Nebelparameter den oder die
Werte in Paramentern zu. Die folgenden Werte werden für pname
akzeptiert:
#GL_FOG_MODE
param
ist ein einzelner Gleitkommawert, der die Gleichung angibt, die zur
Berechnung des Nebelblendfaktors f zu verwenden ist. Drei symbolische
Konstanten werden akzeptiert: #GL_LINEAR
, #GL_EXP
und #GL_EXP2
. Die
Gleichungen, die diesen symbolischen Konstanten entsprechen, sind im
Folgenden definiert. Der anfängliche Nebelmodus ist #GL_EXP
.
#GL_FOG_DENSITY
param
ist ein einzelner Gleitkommawert, der die Dichte angibt, die in
beiden exponentiellen Nebelgleichungen verwendete Nebeldichte. Es werden
nur nichtnegative Dichten akzeptiert. Die anfängliche Nebeldichte ist 1.
#GL_FOG_START
param
ist ein einzelner Gleitkommawert, der den Start, den in der linearen
Nebelgleichung verwendeten Nahbereich, angibt. Der anfängliche Nahbereich ist 0.
#GL_FOG_END
param
ist ein einzelner Gleitkommawert, der das Ende, den in der
linearen Nebelgleichung verwendeten Fernbereich, angibt. Der
anfängliche Fernbereich ist 1.
#GL_FOG_INDEX
param
ist ein einzelner Gleitkommawert, der den Nebelfarbindex i f angibt.
Der anfängliche Nebelindex ist 0.
#GL_FOG_COLOR
param
muss eine Tabelle mit vier Gleitkommawerten sein, die die
Nebelfarbe Cf angeben. Alle Farbkomponenten werden in den Bereich [0,1]
festgelegt. Die anfängliche Nebelfarbe ist (0, 0, 0, 0).
Fog mischt eine Nebelfarbe mit der Farbe jedes gerasterten Pixelfragments
nach der Texturierung unter Verwendung eines Mischfaktors f. Der Faktor f
wird je nach Nebelmodus auf eine von drei Arten berechnet. c ist der Abstand
in Augenkoordinaten vom Ursprung bis zum vernebelten Fragment. Die
Gleichung für #GL_LINEAR
Nebel lautet wie folgt:
f = (end - c) / (end - start) |
Die Gleichung für #GL_EXP
Nebel lautet:
f = e^(-density*c) |
Die Gleichung für #GL_EXP2
Nebel lautet:
f = e^(-density*c)^2 |
Unabhängig vom Nebelmodus wird f nach der Berechnung in den Bereich [0,1] festgelegt. Wenn sich GL dann im RGBA-Farbmodus befindet, werden die roten, grünen und blauen Farben des Fragments durch Cr ersetzt-
Cr' = f*Cr+(1-f)*Cf |
Fog beeinflusst nicht die Alpha-Komponente eines Fragments.
Im Farbindexmodus wird der Farbindex ir des Fragments ersetzt durch
ir' = f*ir+(1-f)*if |
Weitere Informationen finden Sie in einem OpenGL-Referenzhandbuch.
#GL_FOG_MODE
, #GL_FOG_DENSITY
, #GL_FOG_START
, #GL_FOG_END
, #GL_FOG_INDEX
und #GL_FOG_COLOR
werden akzeptiertpname
gesetzt wird#GL_INVALID_ENUM
wird erzeugt, wenn pname
kein akzeptierter Wert ist,
oder wenn pname
#GL_FOG_MODE
ist und param
kein akzeptierter Wert ist.
#GL_INVALID_VALUE
wird erzeugt, wenn pname
#GL_FOG_DENSITY
ist und
param
negativ ist.
#GL_INVALID_OPERATION
wird erzeugt, wenn gl.Fog()
zwischen
gl.Begin() und gl.End() ausgeführt wird.
#GL_FOG
gl.Get() mit dem Argument #GL_FOG_COLOR
gl.Get() mit dem Argument #GL_FOG_INDEX
gl.Get() mit dem Argument #GL_FOG_DENSITY
gl.Get() mit dem Argument #GL_FOG_START
gl.Get() mit dem Argument #GL_FOG_END
gl.Get() mit dem Argument #GL_FOG_MODE