glColor: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
K (GlColor wurde nach glColor verschoben)
K (Kategorisierung)
 
(9 dazwischenliegende Versionen von 5 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
 
= glColor=
 
= glColor=
  
<br>
+
 
 +
 
 
== Name ==
 
== Name ==
 
'''glColor''' - Setzt die aktuelle Farbe.
 
'''glColor''' - Setzt die aktuelle Farbe.
  
<br>
+
 
 +
 
 
== Delphi-Spezifikationen ==
 
== Delphi-Spezifikationen ==
 
  procedure '''glColor3b'''  (red, green, blue: GLbyte);  
 
  procedure '''glColor3b'''  (red, green, blue: GLbyte);  
Zeile 41: Zeile 43:
 
  procedure '''glColor4usv''' (v: PGLushort);  
 
  procedure '''glColor4usv''' (v: PGLushort);  
  
<br>
+
 
 +
 
 
== Parameter ==
 
== Parameter ==
  
Zeile 61: Zeile 64:
 
|}
 
|}
  
<br>
+
 
 +
 
 
== Beschreibung ==
 
== 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.
 
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.
 
[[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.
 
<br>
 
  
 
== 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.
 +
 
 +
 
 +
 
 +
== Beispiel ==
 +
 
 +
<div align="center">
 +
{|{{Prettytable_B1}}
 +
!colspan="2" align="center" | Ein farbiges Quadrat mit Farbverläufen ("[[glShadeModel|Smooth Shading]]", Standardeinstellung)
 +
|-
 +
|<source lang="pascal">
 +
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;</source>
 +
|[[Bild:GlShadeModel_SMOOTH.jpg]]
 +
|}
 +
</div>
 +
 
  
<br>
 
  
 
== Zugehörige Wertrückgaben ==
 
== Zugehörige Wertrückgaben ==
[[glGet]] mit dem Argument '''GL_CURRENT_COLOR'''.<br>
+
[[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
 +
 
 +
 
  
<br>
 
 
== 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

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.

Info DGL.png 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;
GlShadeModel SMOOTH.jpg


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


Siehe auch

glColorPointer, glIndex, glSecondaryColor