Az ablak törlése

    Egy számítógép képernyõjére rajzolás nem egyezik meg egy rajzlapra rajzolással, ahol a rajzlap fehér, és csak egyetlen dolgunk van, mégpedig az, hogy rajzoljunk. A számítógép memóriája azt a képet tárolja, amelyet utoljára rajzoltunk, így egy új kép megrajzolása elõtt a képet törölnünk kell a háttérszínnel. A háttérszín, amellyel a hátteret töröljük, az alkalmazástól függ. Ezt a mûveletet elvégezhetnénk úgy is, hogy egy háttérszínû, megfelelõen nagy téglalapot rajzolunk a képernyõre. Azonban, mivel az OpenGL-ben lehetõség van a koordináta-rendszer, a szem pozíció és irány beállítására, így ezen téglalap méreteinek kiszámítása nem is olyan egyszerû. Ráadásul a legtöbb számítógép grafikus hardvere több pufferrel rendelkezik azon felül ami a megjelenítendõ kép pixeleinek színét tárolja, így kényelmes egy olyan paranccsal rendelkezni, amely bármelyiket tudja törölni törölni.
    A grafikus hardverben a pixelek színei ún. bitplane-ekként tárolódnak. A tárolásnak két módja van. Az egyik az, hogy a pixel színének mind a négy komponense eltárolódik (vörös, zöld, kék, alpha), vagy csak egy szín index érték tárolódik. Többnyire az elsõ módszert alkalmazzuk.
    Az aktuális törlõ színt, amelyet az RGBA módban a szín pufferek törlésére alkalmazunk a

            void glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);

paranccsal állíthatjuk be. Az alapértelmezett törlõ szín a (0, 0, 0, 0).

A pufferek tartalmát a

            void glClear(GLbitfield mask);

paranccsal törölhetjük. A mask argumentum egy bitenkénti vagy kombinációja a GL_COLOR_BUFFER_BIT, GL_DEPTH_BUFFER_BIT, GL_STENCIL_BUFFER_BIT és GL_ACCUM_BUFFER_BIT szimbolikus konstansoknak.

        pl.: a glClearColor(1.0, 1.0, 1.0, 1.0);
              .
              .
              .
               glClear(GL_COLOR_BUFFER_BIT);

    kódrészlet beállítja a törlõ színt fehérre, majd törli vele a szín puffert.

        a glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    parancs hatása megegyezik a

           glClear(GL_COLOR_BUFFER_BIT);
           glClear(GL_DEPTH_BUFFER_BIT);

    parancsok hatásával; egy különbség van, az elsõ gyorsabb...

<- elõzõ oldal
-> következõ oldal
<-- fõoldal