Im color buffer wird das Bild erzeugt. Er ist ein ganz gewöhnliches Pixelarray, meist in rgba. OpenGL verwaltet minde-stens 4 davon, um tatsächliche 3D-Bilder mit double-buffering erzeugen zu können.
Optional kann man in OpenGL zum rendern einen z-buffer verwenden. In den meisten Fällen wird er auch verwendet werden, OpenGL läßt einem hier aber freie Hand, wenn man z.B. mit BSP’s rendern will, kann man den z-buffer auch abschalten:
glDisable (GL_DEPTH_TEST) glEnable (GL_DEPTH_TEST)
Befehle im Zusammenhang mit dem z-buffer:
Um kurz das beschreiben des z-buffers zu unterbinden:
glDepthMask (GL_TRUE bzw. GL_FALSE)
Um den Wertebereich festzulegen (vordere bzw. hintere z-clipping-plane)
glDepthRange (GLdouble near, GLdouble far)
Um den Wert zum Löschen des z-buffers anzugeben
glClearDepth (float)
Und schließlich kann man auch die Vergleichsfunktion für den z-buffer festlegen:
glDepthFunc (GLenum func)
zulässige Werte für func:
GL_LESS ist der default Wert, der bedeutet, das ein Pixel nur dann gezeichnet wird, wenn sein z-Wert kleiner ist (= näher) als der bereits im z-buffer liegende Wert.
Buffer werden mit dem Befehl glClear (GLbitfield mask) gelöscht.
Mask kann dabei folgende Werte annehmen, bzw. setzt sich aus diesen Werten zusammen:
Man kann natürlich der Reihe nach jeden Buffer einzeln löschen, es empfiehlt sich aber statt dessen alle benötigten Buf-fer auf einmal zu löschen, da manche Hardwarebeschleuniger Buffer parallel löschen können.
Also z.B. glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);