Bezeichnung
gl.Material -- setzt Materialparameter für das Beleuchtungsmodell
Übersicht
gl.Material(face, pname, param)
Beschreibung
gl.Material() weist den Materialparametern Werte zu. Es gibt zwei aufeinander abgestimmte Einstellungen von Materialparametern. Eine, die nach vorne gerichtete, wird verwendet, um Punkte, Linien, Bitmaps und alle Polygone (wenn die zweiseitige Beleuchtung deaktiviert ist) oder nur nach vorne gerichtete Polygone (wenn die zweiseitige Beleuchtung aktiviert ist) zu schattieren. Die andere Einstellung, nach hinten gerichtet, wird nur dann verwendet, wenn eine zweiseitige Beleuchtung aktiviert ist, um nach hinten gerichtete Polygone zu ermöglichen. Siehe gl.LightModel für Details zur ein- und zweiseitigen Lichtberechnung.

gl.Material() nimmt drei Argumente an. Das erste, face, gibt an, ob die #GL_FRONT Materialien, die #GL_BACK Materialien oder beide #GL_FRONT_AND_BACK Materialien modifiziert werden. Der zweite, pname, gibt an, welcher von mehreren Parametern in einer oder beiden Einstellungen geändert wird. Der dritte, param, gibt an, welcher Wert oder welche Werte dem angegebenen Parameter zugewiesen werden. Es kann ein einzelner Gleitkommawert oder eine Tabelle mit mehreren Gleitkommawerten sein.

Materialparameter werden in der Beleuchtungsgleichung verwendet, die optional auf jeden Knoten angewendet wird. Die Gleichung wird auf der Referenzseite gl.LightModel() erläutert. Die Parameter, die mit gl.Material() angegeben werden können und ihre Interpretation durch die Lichtgleichung sind wie folgt:

#GL_AMBIENT
param muss eine Tabelle mit vier Gleitkommawerten sein, die den Umgebungs-RGBA-Reflexionsgrad des Materials angeben. Die anfängliche Umgebungsreflexion für sowohl nach vorne als auch nach hinten gerichtete Materialien beträgt (0.2, 0.2, 0.2, 1.0).

#GL_DIFFUSE
param muss eine Tabelle mit vier Gleitkommawerten sein, die den diffusen RGBA-Reflexionsgrad des Materials angeben. Die anfängliche diffuse Reflexion für sowohl vordere als auch hintere Materialien ist (0.8, 0.8, 0.8, 1.0).

#GL_SPECULAR
param muss eine Tabelle mit vier Gleitkommawerten sein, die den spiegelnden RGBA-Reflexionsgrad des Materials angeben. Die anfängliche Spiegelreflexion für sowohl vordere als auch hintere Materialien ist (0, 0, 0, 1).

#GL_EMISSION
param muss eine Tabelle mit vier Gleitkommawerten sein, die die RGBA-emittierte Lichtintensität des Materials angeben. Die anfängliche Emissionsintensität für sowohl nach vorne als auch nach hinten gerichtete Materialien beträgt (0, 0, 0, 1).

#GL_SHININESS
param muss ein einzelner Gleitkommawert sein, der den RGBA-Spiegelexponenten des Materials angibt. Es werden nur Werte im Bereich (0,128) akzeptiert. Der anfängliche Spiegelexponent für sowohl nach vorne als auch nach hinten gerichtete Materialien ist 0.

#GL_AMBIENT_AND_DIFFUSE
Entspricht dem zweimaligen Aufruf von gl.Material() mit den gleichen Parameterwerten, einmal mit #GL_AMBIENT und einmal mit #GL_DIFFUSE.

#GL_COLOR_INDEXES
param muss eine Tabelle mit drei Gleitkommawerten sein, die die Farbindizes für Umgebungs-, Diffus- und Spiegelbeleuchtung angibt. Diese drei Werte und #GL_SHINESS sind die einzigen Materialwerte, die von der Beleuchtungsgleichung im Farbindexmodus verwendet werden. Siehe gl.LightModel für eine Behandlung über Farbindexbeleuchtung.

Die Materialparameter können jederzeit aktualisiert werden. Insbesondere kann gl.Material() zwischen einem Aufruf von gl.Begin() und gl.End() aufgerufen werden. Soll jedoch nur ein einziger Materialparameter pro Knoten geändert werden, so ist gl.ColorMaterial() bevorzugt gegenüber gl.Material() zu wählen. Siehe gl.ColorMaterial für Details.

Während die Parameter Umgebung-, Diffus-, Spiegel- und Emissionsmaterial alle Alpha-Komponenten aufweisen, wird bei der Lichtberechnung nur die diffuse Alpha-Komponente verwendet.

Weitere Informationen finden Sie in einem OpenGL-Referenzhandbuch.

Eingaben
face
gibt an, welche Fläche(n) aktualisiert werden sollen; muss eine der folgenden sein: #GL_FRONT, #GL_BACK, oder #GL_FRONT_AND_BACK
pname
gibt den Materialparameter der Fläche(n) an, die aktualisiert wird/werden (siehe oben)
param
einen Gleitkommawert (oder eine Tabelle mit mehreren Gleitkommawerten), auf den pname gesetzt wird
Fehler
#GL_INVALID_ENUM wird erzeugt, wenn entweder face oder pname kein akzeptierter Wert ist.

#GL_INVALID_VALUE wird erzeugt, wenn ein Spiegelexponent außerhalb des Bereichs (0,128) angegeben wird.

Verbundene get-operationen
gl.GetMaterial()


Navigation zeigen