gl.Material(face, pname, param)
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
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.
#GL_FRONT
, #GL_BACK
, oder #GL_FRONT_AND_BACK
pname
gesetzt wird#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.