glMaterial

Aus DGL Wiki
Wechseln zu: Navigation, Suche

glMaterial

Name

glMaterial - spezifiziert Materialeigenschaften für das Beleuchtungsmodel


Delphi-Spezifikation

procedure glMaterialf(face: TGLenum; pname: TGLenum; param: TGLfloat);
procedure glMateriali(face: TGLenum; pname: TGLenum; param: TGLint);


Parameter

face Bezeichnet die Seiten einer Fläche, die von den Eigenschaften betroffen sein sollen. Akzeptiert werden:
GL_FRONT, GL_BACK und GL_FRONT_AND_BACK.
pname Bezeichnet einen Wert der die Materialeigenschaft der Fläche(n) angibt, die geändert werden soll. Akzeptiert wird nur GL_SHININESS.
param Ist ein einzelner Wert auf den GL_SHININESS gesetzt werden soll.



Delphi-Spezifikation

procedure glMaterialfv(face: TGLenum; pname: TGLenum; const params: PGLfloat); 
procedure glMaterialiv(face: TGLenum; pname: TGLenum; const params: PGLint);


Parameter

face Bezeichnet die Seiten einer Fläche, die von den Eigenschaften betroffen sein sollen. Akzeptiert werden:
GL_FRONT, GL_BACK und GL_FRONT_AND_BACK.
pname Bezeichnet die Materialeigenschaft der Fläche(n) die geändert werden soll. Akzeptiert werden:
GL_AMBIENT, GL_DIFFUSE, GL_SPECULAR, GL_EMISSION, GL_SHININESS, GL_AMBIENT_AND_DIFFUSE, oder GL_COLOR_INDEXES.
params Ist ein Pointer auf einen oder mehrere Werte auf die pname gesetzt werden soll.



Beschreibung

glMaterial setzt die Werte von Materialeigenschaften. Es gibt zwei verschiedene Arten von Materialparametern. Die eine Art, die sogenannten Vorderseiten, ausgewiesen durch das Schlüsselwort GL_FRONT, wird benutzt um Punkte, Linien, Bitmaps und alle Polygone (wenn doppelseitige Beleuchtung deaktiviert ist) oder nur die Vorderseiten aller Polygone (bei aktivierter doppelseitiger Beleuchtung) zu beeinflussen (to shade).
Die andere Art, entsprechend Rückseiten genannt, wird benutzt um die Rückseiten der Polygone zu beleuchten. Dies wirkt sich nur bei aktivierter doppelseitiger Beleuchtung aus. Bei glLightModel finden Sie weitere Informationen zum Thema Ein- und Zweiseitige Lichtberechnungen.

glMaterial erwartet drei Parameter.
Der erste, face, gibt an ob nur die Materialeigenschaften der Vorderseiten (GL_FRONT), der Rückseiten (GL_BACK) oder beider Seiten (GL_FRONT_AND_BACK) verändert werden sollen.
Der zweite Parameter, pname, gibt an welche Eigenschaft einer oder beider Seiten genau verändert werden soll.
Der dritte und letzte Parameter, params, enthält den oder die Werte auf welche die ausgewählte Eigenschaft gesetzt werden soll.

Materialeigenschaften wirken sich auf die Lichtberechnung aus, die optional für jeden Vertex angewendet werden kann. Die Lichtberechnung wird ausführlich bei glLightModel behandelt. Die Parameter die mit glMaterial benutzt werden können und ihre Bedeutung sind folgende:

GL_AMBIENT

params enthält vier ganzzahlige oder Fließkommawerte welche den ambienten RGBA Lichtanteil repräsentieren, der vom Material reflektiert wird.
Ganzzahlen werden linear so auf das Interval [-1.0, 1.0] abgebildet, dass der größtmögliche Integerwert auf 1.0 und der kleinstmögliche auf -1.0 abgebildet wird.
Fließkommazahlen werden unverändert übernommen.
Weder Ganz- noch Fließkommazahlen sind beschränkt.
Der Vorgabewert für die ambiente Reflexion von Vorder- und Rückseiten ist (0.2, 0.2, 0.2, 1.0).

GL_DIFFUSE

params enthält vier ganzzahlige oder Fließkommawerte welche den diffusen RGBA Lichtanteil repräsentieren, der vom Material reflektiert wird.
Ganzzahlen werden linear so auf das Interval [-1.0, 1.0] abgebildet, dass der größtmögliche Integerwert auf 1.0 und der kleinstmögliche auf -1.0 abgebildet wird.
Fließkommazahlen werden unverändert übernommen.
Weder Ganz- noch Fließkommazahlen sind beschränkt.
Der Vorgabewert für die diffuse Reflexion von Vorder- und Rückseiten ist (0.8, 0.8, 0.8, 1.0).

GL_SPECULAR

params enthält vier ganzzahlige oder Fließkommawerte welche den RGBA Glanzlichtanteil repräsentieren, der vom Material reflektiert wird.
Ganzzahlen werden linear so auf das Interval [-1.0, 1.0] abgebildet, dass der größtmögliche Integerwert auf 1.0 und der kleinstmögliche auf -1.0 abgebildet wird.
Fließkommazahlen werden unverändert übernommen.
Weder Ganz- noch Fließkommazahlen sind beschränkt.
Der Vorgabewert für die Glanzlicht-Reflexion von Vorder- und Rückseiten ist (0.0, 0.0, 0.0, 1.0).

GL_EMISSION

params enthält vier ganzzahlige oder Fließkommawerte welche den ausgestrahlten RGBA Lichtanteil repräsentieren, der vom Material ausgeht.
Ganzzahlen werden linear so auf das Interval [-1.0, 1.0] abgebildet, dass der größtmögliche Integerwert auf 1.0 und der kleinstmögliche auf -1.0 abgebildet wird.
Fließkommazahlen werden unverändert übernommen.
Weder Ganz- noch Fließkommazahlen sind beschränkt.
Der Vorgabewert für die Intensität des abgestrahlten Lichts von Vorder- und Rückseiten ist (0.0, 0.0, 0.0, 1.0).

GL_SHININESS

params enthält eine einzelne Ganz- oder Fließkommazahl welche den Glanzlichtexponent repräsentieren. (Specular Exponent) Je größer der Wert desto härter/glatter wirkt das Material.
Ganz- und Fließkommazahlen werden unverändert übernommen.
Es werden nur Werte aus dem Intervall [0, 128] akzeptiert.
Der Vorgabewert für den Glanzlichtexponent von Vorder- und Rückseiten ist 0.

GL_AMBIENT_AND_DIFFUSE

Bewirkt das selbe wie zwei getrennte Aufrufe von glMaterial mit den Parametern GL_AMBIENT und GL_DIFFUSE.

GL_COLOR_INDEXES

params enthält 3 Ganz- oder Fließkommazahlen die den Farbindex für den ambienten, diffusen und den Glanzlichtanteil darstellen.
Diese drei Werte und GL_SHININESS sind die einzigen Materialeigenschaften die im Farbindex-Modus (siehe glIndex) in die Lichtberechnung einfließen. Unter glLightModel finden Sie nähere Informationen zur Lichtberechnung im Farbindex-Modus.

Hinweise

Materialeigenschaften können zu jedem Zeitpunkt geändert werden. Das heißt auch innerhalb eines glBegin-glEnd Blocks. Wenn nur eine einzelne Materialeigenschaft pro Vertex geändert werden soll, sollte glColorMaterial glMaterial vorgezogen werden.


Eine Sammlung gängiger Reflexionskoefizienten findet ihr unter Materialsammlung.



Fehlermeldungen

GL_INVALID_ENUM wird generiert wenn face oder pname ein ungültiger Wert übergeben wurde.
GL_INVALID_VALUE wird generiert wenn dem Glanzexponent (Specular Exponent) ein Wert außerhalb des gültigen Intervalls [0,128] zugewiesen wurde.


Zugehörige Wertrückgaben

glGetMaterial



Siehe auch

glColorMaterial, glLight, glLightModel

Materialsammlung