glColor: Unterschied zwischen den Versionen
Flash (Diskussion | Beiträge) K (→Hinweise: Beispiel hinzugefügt) |
K (Kategorisierung) |
||
(7 dazwischenliegende Versionen von 5 Benutzern werden nicht angezeigt) | |||
Zeile 70: | Zeile 70: | ||
[[glColor3b]], [[glColor4b]], [[glColor3s]], [[glColor4s]], [[glColor3i]] und [[glColor4i]] bekommen drei bzw. vier vorzeichenbehaftete Bytes, kurze- oder lange Integerwerte als Argumente. Wenn am Namen der Funktion ein ''v'' hängt, bekommen die Befehle ihre Argumente als einen Zeiger auf die Farbkomponenten. | [[glColor3b]], [[glColor4b]], [[glColor3s]], [[glColor4s]], [[glColor3i]] und [[glColor4i]] bekommen drei bzw. vier vorzeichenbehaftete Bytes, kurze- oder lange Integerwerte als Argumente. Wenn am Namen der Funktion ein ''v'' hängt, bekommen die Befehle ihre Argumente als einen Zeiger auf die Farbkomponenten. | ||
+ | |||
+ | {{Hinweis|Bei ''v'' ist auf die Bytereihenfolge des Zielsystemes zu achten, da es bei falscher Reihenfolge zu Farbverschiebungen kommen kann.}} | ||
Die aktuellen Farbwerte werden im Fließkommaformat abgelegt, ohne spezifizierte Mantissen- und Exponentengröße. Vorzeichenlose Integerfarbwerte (falls angegeben) werden linear auf das Fließkommaintervall [-1,0] abgebildet. Vorzeichenbehaftete Integerwerte werden linear auf das Fließkommaintervall [-1,1] abgebildet. | Die aktuellen Farbwerte werden im Fließkommaformat abgelegt, ohne spezifizierte Mantissen- und Exponentengröße. Vorzeichenlose Integerfarbwerte (falls angegeben) werden linear auf das Fließkommaintervall [-1,0] abgebildet. Vorzeichenbehaftete Integerwerte werden linear auf das Fließkommaintervall [-1,1] abgebildet. | ||
Weder Fließkomma, noch vorzeichenbehaftete werden auf den Interval [0,1] beschränkt, bevor die aktuelle Farbe aktualisiert wird. Farbwerte werden jedoch auf dieses Intervall beschränkt, bevor diese in den Farbpuffer geschrieben werden. | Weder Fließkomma, noch vorzeichenbehaftete werden auf den Interval [0,1] beschränkt, bevor die aktuelle Farbe aktualisiert wird. Farbwerte werden jedoch auf dieses Intervall beschränkt, bevor diese in den Farbpuffer geschrieben werden. | ||
− | |||
− | |||
− | |||
== Hinweise == | == Hinweise == | ||
Der Vorgabewert für die aktuelle Farbe ist (1, 1, 1, 1). | Der Vorgabewert für die aktuelle Farbe ist (1, 1, 1, 1). | ||
− | Die aktuelle Farbe kann zu jeder Zeit geändert werden, auch in einem [[glBegin]]-[[glEnd]] Block. | + | Die aktuelle Farbe kann zu jeder Zeit geändert werden, auch in einem [[glBegin]]-[[glEnd]]-Block. |
+ | |||
+ | Bei Texturen gilt: Es wird der Farbwert multipliziert. | ||
+ | Der Farbwert der Textur wird an der Stelle mit der (per glColor gesetzen) Farbe multipliziert, daher passiert bei (1,1,1) nichts und es wird die Textur einfach so gezeichnet. | ||
+ | Falls also einmal ein beliebiges Objekt in verfälschten Farben dargestellt wird, einfach vorher den Befehl glColor3f(1, 1, 1); aufrufen. | ||
Zeile 91: | Zeile 94: | ||
!colspan="2" align="center" | Ein farbiges Quadrat mit Farbverläufen ("[[glShadeModel|Smooth Shading]]", Standardeinstellung) | !colspan="2" align="center" | Ein farbiges Quadrat mit Farbverläufen ("[[glShadeModel|Smooth Shading]]", Standardeinstellung) | ||
|- | |- | ||
− | |<pascal> | + | |<source lang="pascal"> |
glBegin(GL_QUADS); | glBegin(GL_QUADS); | ||
glColor3f(1, 0, 0); glVertex3f(0, 0, 0); | glColor3f(1, 0, 0); glVertex3f(0, 0, 0); | ||
Zeile 97: | Zeile 100: | ||
glColor3f(0, 0, 1); glVertex3f(1, 1, 0); | glColor3f(0, 0, 1); glVertex3f(1, 1, 0); | ||
glColor3f(1, 1, 0); glVertex3f(0, 1, 0); | glColor3f(1, 1, 0); glVertex3f(0, 1, 0); | ||
− | glEnd;</ | + | glEnd;</source> |
|[[Bild:GlShadeModel_SMOOTH.jpg]] | |[[Bild:GlShadeModel_SMOOTH.jpg]] | ||
|} | |} | ||
</div> | </div> | ||
+ | |||
+ | |||
== Zugehörige Wertrückgaben == | == Zugehörige Wertrückgaben == | ||
− | [[glGet]] mit dem Argument '''GL_CURRENT_COLOR''' | + | [[glGet]] mit dem Argument '''[[glGet#GL_CURRENT_COLOR|GL_CURRENT_COLOR]]''' |
− | [[glGet]] mit dem Argument '''GL_RGBA_MODE'''. | + | |
+ | [[glGet]] mit dem Argument '''[[glGet#GL_RGBA_MODE|GL_RGBA_MODE]]''' | ||
+ | |||
+ | |||
+ | |||
+ | == Links == | ||
+ | http://www.opengl.org/sdk/docs/man/xhtml/glColor.xml | ||
== Siehe auch == | == Siehe auch == | ||
− | [[glIndex]] | + | [[glColorPointer]], [[glIndex]], [[glSecondaryColor]] |
[[Kategorie:GL|Color]] | [[Kategorie:GL|Color]] | ||
+ | [[Kategorie:GL1.0|Color]] |
Aktuelle Version vom 11. Juli 2011, 10:08 Uhr
Inhaltsverzeichnis
glColor
Name
glColor - Setzt die aktuelle Farbe.
Delphi-Spezifikationen
procedure glColor3b (red, green, blue: GLbyte); procedure glColor3d (red, green, blue: GLdouble); procedure glColor3f (red, green, blue: GLfloat); procedure glColor3i (red, green, blue: GLint); procedure glColor3s (red, green, blue: GLshort); procedure glColor3ub (red, green, blue: GLubyte); procedure glColor3ui (red, green, blue: GLuint); procedure glColor3us (red, green, blue: GLushort); procedure glColor4b (red, green, blue, alpha: GLbyte); procedure glColor4d (red, green, blue, alpha: GLdouble); procedure glColor4f (red, green, blue, alpha: GLfloat); procedure glColor4i (red, green, blue, alpha: GLint); procedure glColor4s (red, green, blue, alpha: GLshort); procedure glColor4ub (red, green, blue, alpha: GLubyte); procedure glColor4ui (red, green, blue, alpha: GLuint); procedure glColor4us (red, green, blue, alpha: GLushort);
procedure glColor3bv (v: PGLByte); procedure glColor3dv (v: PGLdouble); procedure glColor3fv (v: PGLfloat); procedure glColor3iv (v: PGLint); procedure glColor3sv (v: PGLshort); procedure glColor3ubv (v: PGLubyte); procedure glColor3uiv (v: PGLuint); procedure glColor3usv (v: PGLushort); procedure glColor4bv (v: PGLbyte); procedure glColor4dv (v: PGLdouble); procedure glColor4fv (v: PGLfloat); procedure glColor4iv (v: PGLint); procedure glColor4sv (v: PGLshort); procedure glColor4ubv (v: PGLubyte); procedure glColor4uiv (v: PGLuint); procedure glColor4usv (v: PGLushort);
Parameter
Für alle glColor-Befehle, die direkt Werte annehmen (ohne v) :
red, green, blue | Setzt den neuen Rot-, Grün- und Blauwert für die aktuelle Farbe. |
---|---|
alpha | Setzt den neuen Alphawert für die aktuelle Farbe. Nur bei glColor4-Befehlen. |
Für alle glColor-Befehle, die einen Zeiger auf Werte bekommen (mit v) :
v | Zeiger auf eine Reihe von Werten, in denen nacheinander Rot-, Grün-, Blau- und (ggf.) der Alpha-Anteil der neuen Farbe abgelegt sind. |
---|
Beschreibung
Die GL speichert sowohl den aktuellen Einzelwert-Index und die aktuellen Vierwert-RGBA-Farbe. glColor setzt eine neue RGBA-Farbe, und kommt in zwei grundlegenden Varianten : glColor3f und glColor4f. Erstere gibt Rot-, Grün- und Blauanteil der neuen Farbe explizit an, während der Alphawert auf 1 gesetzt wird (volle Intensität). Bei der zweiten Variante hingegen werden alle vier Komponenten direkt angegeben.
glColor3b, glColor4b, glColor3s, glColor4s, glColor3i und glColor4i bekommen drei bzw. vier vorzeichenbehaftete Bytes, kurze- oder lange Integerwerte als Argumente. Wenn am Namen der Funktion ein v hängt, bekommen die Befehle ihre Argumente als einen Zeiger auf die Farbkomponenten.
Bei v ist auf die Bytereihenfolge des Zielsystemes zu achten, da es bei falscher Reihenfolge zu Farbverschiebungen kommen kann. |
Die aktuellen Farbwerte werden im Fließkommaformat abgelegt, ohne spezifizierte Mantissen- und Exponentengröße. Vorzeichenlose Integerfarbwerte (falls angegeben) werden linear auf das Fließkommaintervall [-1,0] abgebildet. Vorzeichenbehaftete Integerwerte werden linear auf das Fließkommaintervall [-1,1] abgebildet.
Weder Fließkomma, noch vorzeichenbehaftete werden auf den Interval [0,1] beschränkt, bevor die aktuelle Farbe aktualisiert wird. Farbwerte werden jedoch auf dieses Intervall beschränkt, bevor diese in den Farbpuffer geschrieben werden.
Hinweise
Der Vorgabewert für die aktuelle Farbe ist (1, 1, 1, 1).
Die aktuelle Farbe kann zu jeder Zeit geändert werden, auch in einem glBegin-glEnd-Block.
Bei Texturen gilt: Es wird der Farbwert multipliziert. Der Farbwert der Textur wird an der Stelle mit der (per glColor gesetzen) Farbe multipliziert, daher passiert bei (1,1,1) nichts und es wird die Textur einfach so gezeichnet. Falls also einmal ein beliebiges Objekt in verfälschten Farben dargestellt wird, einfach vorher den Befehl glColor3f(1, 1, 1); aufrufen.
Beispiel
Ein farbiges Quadrat mit Farbverläufen ("Smooth Shading", Standardeinstellung) | |
---|---|
glBegin(GL_QUADS);
glColor3f(1, 0, 0); glVertex3f(0, 0, 0);
glColor3f(0, 1, 0); glVertex3f(1, 0, 0);
glColor3f(0, 0, 1); glVertex3f(1, 1, 0);
glColor3f(1, 1, 0); glVertex3f(0, 1, 0);
glEnd;
|
Zugehörige Wertrückgaben
glGet mit dem Argument GL_CURRENT_COLOR
glGet mit dem Argument GL_RGBA_MODE
Links
http://www.opengl.org/sdk/docs/man/xhtml/glColor.xml