glLightModel

Aus DGL Wiki
Version vom 31. August 2004, 23:59 Uhr von Flash (Diskussion | Beiträge) (Version Hochgeladen)

Wechseln zu: Navigation, Suche

glLightModel


Name

glLightModel - setzt Parameter für das Beleuchtungsmodel.


Delphi-Spezifikation

procedure glLightModelf(pname: TGLenum; param: TGLfloat);
procedure glLightModeli(pname: TGLenum; param: TGLint);


Parameter

pname Spezifiziert einen Lichtparameter der nur einen Wert erwartet.
GL_LIGHT_MODEL_LOCAL_VIEWER und GL_LIGHT_MODEL_TWO_SIDE werden akzeptiert.
param Enthält den Wert auf den pname gesetzt werden soll.


Delphi-Spezifikation

procedure glLightModelfv(pname: TGLenum; const params: PGLfloat);
procedure  glLightModeliv(pname: TGLenum; const params: PGLint);


Parameter

pname Spezifiziert einen Lichtparameter. Akzeptiert werden:

GL_LIGHT_MODEL_AMBIENT, GL_LIGHT_MODEL_LOCAL_VIEWER,

und GL_LIGHT_MODEL_TWO_SIDE
params Ist ein Zeiger auf den oder die Werte auf die pname gesetzt werden soll.


Beschreibung

glLightModel setzt die Eigenschaften für das Beleuchtungsmodel. pname bezeichnet dabei die Eigenschaft und params den oder die Werte welche der Eigenschaft zugewiesen werden sollen.
Es gibt 3 Beleuchtungsmodelle:

GL_LIGHT_MODEL_AMBIENT

params enthält vier Ganzahlen oder Fließkommawerte welche die ambiente RGBA Intensität der gesamten Szene spezifizieren.
Ganzzahlen werden linear auf das Intervall [-1.0, 1.0] umgerechnet. Dies geschieht so, dass der größte Integerwert zu 1.0 und der kleinste zu -1.0 wird.
Fließkommazahlen werden direkt übertragen.
Weder Ganz- noch Fließkommazahlen sind beschränkt.
Der Vorgabewert für die ambiente Szenenbeleuchtung ist (0.2, 0.2, 0.2, 1.0).

GL_LIGHT_MODEL_LOCAL_VIEWER

params ist eine einzelne Ganz- oder Fließkommazahl welche bestimmt, wie der Reflexionswinkel für das Glanzlicht berechnet wird.
Wenn params = 0 (bzw. 0.0) ist, wird dieser Winkel so bestimmt, dass die Reflexion parallel zur Blickrichtung und Richtung -Z-Achse verläuft. Dabei wird die Position des Vertex in Betrachterkoordinaten nicht beachtet.
In jedem anderen Fall wird die Glanzlichtreflexion bezüglich den Koordinatenursprung in Betrachterkoordinaten berechnet.
Der Vorgabewert ist 0.
(params wirkt sich wie eine Booleanvariable in C aus. 0 = false, alles andere = true.)

GL_LIGHT_MODEL_TWO_SIDE

params ist eine einzelne Ganz- oder Fließkommazahl welche bestimmt, ob die Lichtberechnung für polygone nur einseitig oder zweiseitig ist.
Diese Einstellung wirkt sich nicht auf die lichtberechnung für Punkte, Linien und Bitmaps aus.
Wenn params = 0 (bzw. 0.0) ist, wird die Lichtberechnung für polygone einseitig durchgeführt. Das heißt, dass nur die Materialparameter der Vorderseiten in die Lichtberechnung einbezogen werden.
In jedem anderen Fall wird die zweiseitige Lichtberechnung aktiviert. In diesem Fall werden die Vetices der Rückseite mittels der Materialeigenschaften der Rückseiten beleuchtet. Außerdem werden die Normalen umgekehrt bevor die Lichtberechnung ausgeführt wird.
Vertices der Vorderseiten von Polygonen werden immer, mittels der Materialeigenschaften die für Vorderseiten definiert wurden, beleuchtet. Dabie werden keine Änderungen an den Normalen durchgeführt.
Der Vorgabewert ist 0.
(params wirkt sich wie eine Booleanvariable in C aus. 0 = false, alles andere = true.)

In RGBA mode, the lighted color of a vertex is the sum of the material emission intensity, the product of the material ambient reflectance and the lighting model full-scene ambient intensity, and the contribution of each enabled light source. Each light source contributes the sum of three terms: ambient, diffuse, and specular. The ambient light source contribution is the product of the material ambient reflectance and the lights ambient intensity. The diffuse light source contribution is the product of the material diffuse reflectance, the lights diffuse intensity, and the dot product of the vertex's normal with the normalized vector from the vertex to the light source. The specular light source contribution is the product of the material specular reflectance, the lights specular intensity, and the dot product of the normalized vertex-to-eye and vertex-to-light vectors, raised to the power of the shininess of the material. All three light source contributions are attenuated equally based on the distance from the vertex to the light source and on light source direction, spread exponent, and spread cutoff angle. All dot products are replaced with zero if they evaluate to a negative value.

Die Alpha komponente der resultierenden, beleuchteten Farbe wird dem Alpha-Wert der Diffusen Materialreflektion zugewiesen.

Im Farbindexmodus reicht der Wert des Beleuchtungsindex eines Vertex vom ambienten Wert bis zum Glanzlichtwert, der an glMaterial mittels GL_COLOR_INDEX übergeben wurde.
Diffuse und Glanzlichtkoeffizienten bestimmen um wieviel der resultierende Index größer ist als der ambiente. Die genannten Koeffizienten werden mit einer Gewichtung der Lichtfarben (30%, 59%, 11%), dem Glanz (Shininess) des Materials sowie den selben Reflektions- und Abschwächungsgleichungen wie im RGBA Fall berechnet.



Fehlermeldungen

GL_INVALID_ENUM wird generiert wenn pname ein ungültiger Wert übergeben wird.
GL_INVALID_OPERATION wird generiert wenn glLightModel innerhalb eines glBegin-glEnd Blocks aufgerufen wird.


Zugehörige Wertrückgaben

glGet mit Token GL_LIGHT_MODEL_AMBIENT
glGet mit Token GL_LIGHT_MODEL_LOCAL_VIEWER
glGet mit Token GL_LIGHT_MODEL_TWO_SIDE
glIsEnabled mit Token GL_LIGHTING


Siehe auch

glLight, glMaterial