Farbpuffer: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
K ()
()
Zeile 1: Zeile 1:
{{Unvollständig}}
+
<br>
== Was ist der Colorbuffer? ==
+
== Was ist der Farbpuffer? ==
Der Colorbuffer enthält die Farbinformationen der [[Fragment|Fragmente]] im [[Framebuffer]].
+
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 ==
  
 +
=== 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.
 +
 +
=== 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.
 +
 +
<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.
 
Dieser Farbwert wird mit Hilfe der Funktion [[glClearColor]] definiert.
 
Dieser Farbwert wird mit Hilfe der Funktion [[glClearColor]] definiert.
 +
Farbwerte für einzelne [[Eckpunkt|Eckpunkte]] übergibt man mittels [[glColor]].
 +
 +
<br>
 +
== Siehe auch ==
 +
[[Tiefenpuffer]], [[Schablonenpuffer]], [[Akkumulationspuffer]]

Version vom 24. September 2004, 11:21 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.

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