Farbpuffer: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
K (RGBA-Modus)
K (Bot: konvertiere/korrigiere <BR>)
Zeile 3: Zeile 3:
 
Der Farbpuffer enthält die Farbinformationen der einzelnen [[Fragment|Fragmente]] im [[Framebuffer]]. Gespeichert werden dazu je nach Modus entweder Indizes auf Paletteneinträgte (Index-Modus) oder Intensitäts-Werte der Pufferkomponenten (RGB(A)-Modus).
 
Der Farbpuffer enthält die Farbinformationen der einzelnen [[Fragment|Fragmente]] im [[Framebuffer]]. Gespeichert werden dazu je nach Modus entweder Indizes auf Paletteneinträgte (Index-Modus) oder Intensitäts-Werte der Pufferkomponenten (RGB(A)-Modus).
  
<br>
+
 
 +
 
 
== Aufbau ==
 
== Aufbau ==
  
Zeile 15: Zeile 16:
 
Dieser Modus wird heute nur noch sehr selten verwendet, denn 256-Palettenfarben sind inzwischen einfach viel zu wenig, aber mehr war damals aufgrund eingeschränkter Hardware einfach nicht machbar. In diesem Modus gibt man (im Normalfall beim Programmstart) eine Farbpalette an, in der sich alle benötigten Farbwerte befinden. Jeder dieser Farbwerte besitzt eine eindeutige Nummer, den Index. OpenGL schreibt in diesem Modus dann nicht die Intensität der Farbkomponente in den Farbpuffer, sondern einfach nur den Index dieser Farbe, so dass diese später referenziert werden kann.
 
Dieser Modus wird heute nur noch sehr selten verwendet, denn 256-Palettenfarben sind inzwischen einfach viel zu wenig, aber mehr war damals aufgrund eingeschränkter Hardware einfach nicht machbar. In diesem Modus gibt man (im Normalfall beim Programmstart) eine Farbpalette an, in der sich alle benötigten Farbwerte befinden. Jeder dieser Farbwerte besitzt eine eindeutige Nummer, den Index. OpenGL schreibt in diesem Modus dann nicht die Intensität der Farbkomponente in den Farbpuffer, sondern einfach nur den Index dieser Farbe, so dass diese später referenziert werden kann.
  
<br>
+
 
 +
 
 
== Wichtige Funktionen ==
 
== Wichtige Funktionen ==
 
Wie auch die anderen Buffer kann der Colorbuffer über die Funktion [[glClear]] und dem Parameter '''GL_COLOR_BUFFER_BIT''' mit einem Wert gefüllt werden.
 
Wie auch die anderen Buffer kann der Colorbuffer über die Funktion [[glClear]] und dem Parameter '''GL_COLOR_BUFFER_BIT''' mit einem Wert gefüllt werden.
Zeile 21: Zeile 23:
 
Farbwerte für einzelne [[Eckpunkt|Eckpunkte]] übergibt man mittels [[glColor]].
 
Farbwerte für einzelne [[Eckpunkt|Eckpunkte]] übergibt man mittels [[glColor]].
  
<br>
+
 
 +
 
 
== Siehe auch ==  
 
== Siehe auch ==  
 
[[Tiefenpuffer]], [[Schablonenpuffer]], [[Akkumulationspuffer]]
 
[[Tiefenpuffer]], [[Schablonenpuffer]], [[Akkumulationspuffer]]

Version vom 22. April 2006, 19:09 Uhr


Was ist der Farbpuffer?

Der Farbpuffer enthält die Farbinformationen der einzelnen Fragmente im Framebuffer. Gespeichert werden dazu je nach Modus entweder Indizes auf Paletteneinträgte (Index-Modus) oder Intensitäts-Werte der Pufferkomponenten (RGB(A)-Modus).


Aufbau

RGBA-Modus

Hat man einen Renderkontext mit mehr als 8-Bit Farbwerten (8-Bit = 256 Farben = Indexmodus) angefordert, bekommt man von OpenGL einen sog. RGBA-Farbpuffer (R=Rot, G=Grün, B=Blau, A=Alpha) zur verfügung gestellt. Der Farbpuffer besteht dann aus insgesamt 4 unabhängigen Puffern für jede RGBA-Komponente, deren Bit-Tiefe von der gewählten Farbtiefe abhängt. Im Normalfall (32-Bit Farbtiefe, 24 Bit für R+G+B und 8 Bit für A) besitzt jeder dieser Komponentenpuffer 8 Bitflächen, in denen die Intensität der entsprechenden Komponente als Ganzzahlwert abgelegt wird. Die Intensität reicht dabei von 0 (entspricht 0/255) bis 255 (entspricht 1.0, also volle Intensität). Die Alpha-Komponente kann mittels Blending/Alphamasking für verschiedene Transparenz-Effekte verwendet werden.

Wenn man sich unter Windows ein Pixelformat besorgt, werden die Bits aus cColorBits auf Rot, Grün und Blau verteilt. Der Wert von cAlphaBits gibt dagegen die Bits für den Alpha Kanal an.

Index-Modus

Dieser Modus wird heute nur noch sehr selten verwendet, denn 256-Palettenfarben sind inzwischen einfach viel zu wenig, aber mehr war damals aufgrund eingeschränkter Hardware einfach nicht machbar. In diesem Modus gibt man (im Normalfall beim Programmstart) eine Farbpalette an, in der sich alle benötigten Farbwerte befinden. Jeder dieser Farbwerte besitzt eine eindeutige Nummer, den Index. OpenGL schreibt in diesem Modus dann nicht die Intensität der Farbkomponente in den Farbpuffer, sondern einfach nur den Index dieser Farbe, so dass diese später referenziert werden kann.


Wichtige Funktionen

Wie auch die anderen Buffer kann der Colorbuffer über die Funktion glClear und dem Parameter GL_COLOR_BUFFER_BIT mit einem Wert gefüllt werden. Dieser Farbwert wird mit Hilfe der Funktion glClearColor definiert. Farbwerte für einzelne Eckpunkte übergibt man mittels glColor.


Siehe auch

Tiefenpuffer, Schablonenpuffer, Akkumulationspuffer