Az OpenGL renderelési fázisai

Az OpenGL-ben az adott parancsok egy feldolgozási pipeline-on (csõvezeték) haladnak keresztül. A pipeline tartalmazza a megjelenítési listát (display list), a vertexfeldolgozót (per-vertex operations), pixelfeldolgozót (pixel operations), raszterizálót (rasterization), fragmensfeldolgozót (per-fragment operations) és a képpuffert (framebuffer). Minden fázis egy adott mûvelet elvégzésére képes. Az OpenGL parancsok mindig a hívás sorrendjében kerülnek feldolgozásra, bár elõfordulhat a parancs végrehajtása elõtt egy bizonytalan idejû várakozás. A parancsok elsõ lépésben a megjelenítési listába kerülnek, amely egy FIFO rendszerû tároló, amely a parancsokat a feldolgozásukig tárolja. Innen a parancsok két irányba mehetnek tovább.
A geometriai primitívekre vonatkozó parancsok a vertexfeldolgozóba kerülnek. Itt történnek a geometriai transzformációk, amelyek kiszámítják, hogy adott irányból nézve hol van a vertex képe. Itt történik még az egyenese és a sokszögek vágása is, melynek során az OpenGL levágja azokat a részeket, amelyek kiesnek a látótérbõl. A fázis utolsó mûvelete a vetítés.
Azok a parancsok, amelyek a raszterképekre és bittérképekre vonatkoznak, a pixelfeldolgozóba kerülnek.
Ezután az adatok mindkét egységbõl a raszterizáló egységbe kerülnek, amely a primitíveket fragmensekre bontja. A fragmensek pixelek, és hozzájuk tartozó adatok, melyek a képpufferben a primitívek képét adják. Egy pont egyetlen fragmensbõl áll, mely tartalmazza a pont képének koordinátáit, színét és távolságát. A szakaszok annyi fragmensbõl állnak, ahány pixel elõállítja a szakasz képét a képpufferben. A sokszögek a szakaszokhoz hasonlóan több fragmensbõl állnak. A primitíveknél csak a vertexek távolsága, színe, fényessége és egyéb adatai ismertek; a fragmensekre bontás során a fragmensekre vonatkozó adatokat minden fragmensre meg kell határozni, amely elég bonyolult feladat.
A végsõ fázisban az elkészült fragmensekbõl a fragmensfeldolgozó hozza létre a képpufferben a képet, de elõtte minden fragmens tesztelésre kerül, amikor is eldõl, hogy az adott fragmens közelebb vagy távolabb van-e annál a fragmensnél, ami a képpufferben ugyanott van. A képpuffer csak akkor frissítõdik, ha az új fragmens közelebb van a megfigyelõhöz, mint az eredeti fragmens.

<- elõzõ oldal
<--fõoldal