Bezeichnung
gl.Light -- stellt die Lichtquellenparameter ein
Übersicht
gl.Light(light, pname, param)
Beschreibung
gl.Light() setzt die Werte der einzelnen Lichtquellenparameter. light bezeichnet das Licht und ist ein symbolischer Name der Form #GL_LIGHTi, wobei i von 0 bis zum Wert von #GL_MAX_LIGHTS - 1 reicht. pname gibt einen von zehn Lichtquellenparametern an, wiederum durch einen symbolischen Namen. param ist entweder ein einzelner Gleitkommawert oder eine Tabelle, die mehrere Gleitkommawerte enthält. Dies hängt vom Parameter pname ab.

Um die Lichtberechnung zu aktivieren und zu deaktivieren, rufen Sie gl.Enable() und gl.Disable() auf mit dem Argument #GL_LIGHTING. Die Beleuchtung ist zunächst deaktiviert. Wenn sie aktiviert ist, tragen aktivierte Lichtquellen zur Lichtberechnung bei. Die Lichtquelle i wird mit gl.Enable() und gl.Disable() zusammen mit dem Argument #GL_LIGHTi aktiviert und deaktiviert.

Die zehn Lichtparameter sind wie folgt:

#GL_AMBIENT
param muss vier Gleitkommawerte enthalten, die die RGBA-Umgebungsintensität des Lichts angeben. Die anfängliche Umgebungshelligkeit ist (0, 0, 0, 1).

#GL_DIFFUSE
param muss vier Gleitkommawerte enthalten, die die diffuse RGBA-Intensität des Lichts angeben. Der Anfangswert für #GL_LIGHT0 ist (1, 1, 1, 1); für andere Lichtquellen ist der Anfangswert (0, 0, 0, 1).

#GL_SPECULAR
param muss vier Gleitkommawerte enthalten, die die RGBA-Spiegelintensität des Lichts angeben. Der Anfangswert für #GL_LIGHT0 ist (1, 1, 1, 1); für andere Lichtquellen ist der Anfangswert (0, 0, 0, 1).

#GL_POSITION
param muss vier Gleitkommawerte enthalten, die die Position des Lichts in homogenen Objektkoordinaten angeben. Die Position wird durch die Modellsichtmatrix transformiert, wenn gl.Light() aufgerufen wird (als wäre es ein Punkt), wird sie in Augenkoordinaten gespeichert. Wenn die w-Komponente der Position 0 ist, wird das Licht als gerichtete Quelle behandelt. Bei der Berechnung von diffuser und spiegelnder Beleuchtung wird die Richtung des Lichts, nicht aber seine tatsächliche Position berücksichtigt und die Dämpfung ist deaktiviert. Andernfalls basieren die Berechnungen der diffusen und spiegelnden Beleuchtung auf der tatsächlichen Position des Lichts in den Augenkoordinaten und die Dämpfung ist aktiviert. Die Ausgangsposition ist (0, 0, 1, 0); somit ist die Ausgangslichtquelle ausgerichtet, parallel zur und in Richtung der -z-Achse.

#GL_SPOT_DIRECTION
param muss drei Gleitkommawerte enthalten, die die Richtung des Lichts in homogenen Objektkoordinaten angeben. Die Spotrichtung wird beim Aufruf von gl.Light() durch die oberen 3x3 der Modellsichtmatrix transformiert und in Augenkoordinaten gespeichert. Es ist nur dann von Bedeutung, wenn #GL_SPOT_CUTOFF nicht 180 ist, was es ursprünglich ist. Die Anfangsrichtung ist (0, 0, -1).

#GL_SPOT_EXPONENT
param muss ein einzelner Gleitkommawert sein, der die Intensitätsverteilung des Lichts angibt. Es werden nur Werte im Bereich (0, 128) akzeptiert. Die effektive Lichtintensität wird durch den Kosinus des Winkels zwischen der Richtung des Lichts und der Richtung vom Licht zum beleuchteten Scheitelpunkt gedämpft, erhöht um die Kraft des Punkt-Exponenten. Höhere Punkt-Exponenten führen somit zu einer fokussierteren Lichtquelle, unabhängig vom Punktabschaltwinkel (siehe #GL_SPOT_CUTOFF, nächster Absatz). Der anfängliche Punkt-Exponent ist 0, was zu einer gleichmäßigen Lichtverteilung führt.

#GL_SPOT_CUTOFF
param muss ein einzelner Gleitkommawert sein, der den maximalen Streuwinkel einer Lichtquelle angibt. Es werden nur Werte im Bereich (0, 90) und der Sonderwert 180 akzeptiert. Wenn der Winkel zwischen der Richtung des Lichts und der Richtung vom Licht zum beleuchteten Scheitelpunkt größer ist als der Punktabschaltungswinkel, ist das Licht vollständig verdeckt. Ansonsten wird seine Intensität durch den Punkt-Exponenten und die Dämpfungsfaktoren gesteuert. Die anfängliche Punktabschaltung beträgt 180, was zu einer gleichmäßigen Lichtverteilung führt.

#GL_CONSTANT_ATTENUATION
param muss ein einzelner Gleitkommawert sein, der einen der drei Lichtdämpfungsfaktoren angibt. Es werden nur positive Werte akzeptiert. Wenn das Licht nicht ausgerichtet, sondern positionell ist, wird seine Intensität durch den Kehrwert der Summe aus dem konstanten Faktor, dem linearen Faktor mal dem Abstand zwischen dem Licht und dem beleuchteten Scheitelpunkt und dem quadratischen Faktor mal dem Quadrat des gleichen Abstands abgeschwächt. Die anfänglichen Dämpfungsfaktoren sind (1, 0, 0), was zu keiner Dämpfung führt.

#GL_LINEAR_ATTENUATION
Siehe Dokumentation von #GL_CONSTANT_ATTENUATION oben.

#GL_QUADRATIC_ATTENUATION
Siehe Dokumentation von #GL_CONSTANT_ATTENUATION oben.

Es ist immer der Fall, dass #GL_LIGHTi = #GL_LIGHT0 + i ist.

Weitere Informationen finden Sie in einem OpenGL-Referenzhandbuch.

Eingaben
light
gibt eine Lichtquelle an (siehe oben)
pname
gibt einen einzelwertigen Lichtquellenparameter fürs Licht an (siehe oben)
param
einen einzelnen Gleitkommawert oder eine Tabelle mit mehreren Gleitkommawerten (abhängig vom Parameter pname, siehe oben)
Fehler
#GL_INVALID_ENUM wird generiert, wenn entweder light oder pname kein akzeptierter Wert ist.

#GL_INVALID_VALUE wird erzeugt, wenn ein Punkt-Exponentenwert außerhalb des Bereichs (0, 128) angegeben ist, oder wenn eine Punktabschaltung außerhalb des Bereichs (0, 90) (außer dem Sonderwert 180) angegeben ist, oder wenn ein negativer Dämpfungsfaktor angegeben ist.

#GL_INVALID_OPERATION wird erzeugt, wenn gl.Light() zwischen gl.Begin() und gl.End() ausgeführt wird.

Verbundene get-operationen
gl.GetLight()

gl.IsEnabled() mit dem Argument #GL_LIGHTING


Navigation zeigen