Információ megjelenítés Számítógépes ábrázolás Dr. Iványi Péter
(adat szerkezet) float x,y,z,w; float r,g,b,a; } vertex;
glcolor3f(0, 0.5, 0); glvertex2i(11, 31); glvertex2i(37, 71); glcolor3f(0.5, 0, 0); // nincs hatása float x,y,z,w; // 11, 31, 0, 1 float r,g,b,a; // 0, 0.5, 0, 1 } vertex; float x,y,z,w; // 37, 71, 0, 1 float r,g,b,a; // 0, 0.5, 0, 1 } vertex;
OpenGL Koordináták transzformálása 4x4 mátrix műveletek (vertex) megvilágítás számítása Textura koordináták számítása
(adat szerkezet) float x,y,z,w; float r,g,b,a; } vertex; vertex v0,v1,v2; } triangle; vagy vertex v0,v1; } line; vagy vertex v0; } point;
OpenGL Vertexek primitívekbe csoportosítása: pontok, vonalak, vagy háromszögek Polygon háromszögek Esetünkben: Két háromszög létrehozása glbegin(gl_triangle_strip); glcolor(green); glvertex2i( ); // 0 glvertex2i( ); // 1 glcolor(red); glvertex2i( ); // 2 glvertex2i( ); // 3 glend(); 0 1 3 2
OpenGL Ablak által körbevágva Elő oldal, hátoldal műveletek...
(adat szerkezet) float x,y,z,w; float r,g,b,a; } vertex; vertex v0,v1,v2 } triangle; short int x,y; float depth; float r,g,b,a; } fragment;
OpenGL Mely pixelek vannak a primitíven belül fragment generálása minden ilyen pixelre Attribútumok (pl., szín) hozzárendelése minden fragment-hez
Fragment operations OpenGL Texturák Fragment megvilágítás (OpenGL 2.0) köd Scissor teszt Alpha teszt
(2D pixeltömb) float x,y,z,w; float r,g,b,a; } vertex; vertex v0,v1,v2 } triangle; short int x,y; float depth; float r,g,b,a; } fragment; int depth; byte r,g,b,a; } pixel;
Fragment framebufferműveletek OpenGL Mélység teszt (z-buffering) Converzió pixel-ekké Alapötlet: a képet a framebufferben építjük fel, nem csak oda helyezzük!
OpenGL mechanizmus A programozó a műveleti módot adja meg: Vertex Transzformáció Megvilágítás Primitívek Hátlapok leválogatása (back face culling) Fragment Textúrák, megvilágítás
További OpenGL mechanizmusok Pixel pipeline Kliens-szerver felépítés Display listák
OpenGL pipeline Pixel pipeline Vertex pipeline Pixel kicsomagolás Pixel becsomagolás Pixel műveletek Pixel raszterizáció Textúra memoria Prim. raszterizáció
Kliens-szerver OpenGL Kliens Hálózat Kliens oldal Szerver oldal OpenGL Szerver
Közvetlen renderelés Renderelés A primitívek átmennek a pipeline-on és rögtön megjelennek Nincs memória a primitiveknek Display lista A primitívek egy display listába (memóriába) helyeződnek A lista a grafikus megjelenítőn van Ugyanazt különböző állapotban lehet megjeleníteni
Display listák glnewlist(listnév, ); glcolor3f( ); glvertex3f( ); glendlist(); glcalllist(listnév); OpenGL Kliens Hálózat OpenGL Server Kliens oldal Szerver oldal Display lista állapot