Begin/End objektumok


    A legtöbb geometriai objektumot glBegin/glEnd párok közt specifikáljuk. A specifikációba beletartozik a vertex, textúra és szín koordináták megadása. A parancsok:

        void glBegin( enum mode );
        void glEnd( void );

A glBegin parancsnak a következõ argumentumai lehetnek: POINTS, LINE_STRIP, LINE_LOOP, LINES, POLYGON, TRIANGLE_STRIP, TRIANGLE_FAN, TRIANGLES, QUAD_STRIP, QUADS, attól függõen, hogy milyen geometriai objektumot specifikálunk.

POINTS(pontok): független pontok specifikálása.
pl.:

        glBegin(GL_LINES);
            glColor3d(1.0,0.0,0.0);
            glVertex3d(0.5,0.5,0.0);
        glEnd();

egy piros pontot rajzol a (0.5,0.5,0.0) koordinátákba

LINE_STRIP (szakasz sorozat): egy vagy több összekötött szakasz specifikálása a végpontok sorozatának megadásával.
Az elsõ vertex specifikálja az elsõ szakasz kezdõpontját, a második vertex az elsõ szakasz végpontját, és a második szakasz
kezdõpontját, ...

                       Egy szakasz sztrip három vertexszel

pl.: az ábrán látható szakasz sorozat specifikálása:

        glBegin(GL_LINE_STRIP);
            glVertex3d(0,0,0);
            glVertex3d(50,50,0);
            glVertex3d(50,100,0);
        glEnd();
 

LINE_LOOP (szakasz hurkok): ugyanaz, mint a LINE_STRIP, de az utolsóként specifikált vertexet összekötjük az elsõként specifikált vertexszel.


                        Egy szakasz hurok három vertexszel

pl.: az elõzõ példa, azzal a különbséggel, hogy az elsõ pont össze van kötve az utolsóval

        glBegin(GL_LINE_STRIP);
            glVertex3d(0,0,0);
            glVertex3d(50,50,0);
            glVertex3d(50,100,0);
        glEnd();

LINES (független szakaszok): az elsõként specifikált két vertex határozza meg az elsõ szakaszt, a második két vertex a
második szakaszt,.... Ebben az esetben, ha páratlan számú vertexet specifikálunk a glBegin/glEnd pár között, akkor az utolsóként specifikált vertexet az OpenGL nem veszi figyelembe.

POLYGON (sokszögek): polygonokat úgy specifikálhatunk, ha specifikáljuk a határvonalát szakaszok sorozataként,
ugyanúgy, mint a LINE_LOOP-nál. Figyelem: az OpenGL csak konvex sokszögek helyes kirajzolását garantálja (konkáv sokszögeket tudunk pl. úgy rajzolni, hogy felbontjuk konvex sokszögekre).

TRIANGLE_STRIP (háromszög sorozat): háromszögek sorozata közös oldalakkal. Ebben az esetben az elsõ három vertex specifikálja az elsõ háromszöget, minden további vertex egy további háromszöget specifikál úgy, hogy a másik két vertex az elõzõ háromszögbõl származik. Ezt a mûveletet a Gl úgy végzi, hogy mindig eltárol két vertexet, az A és B vertexet, és egy bit mutatót, amely jelzi, hogy melyik eltárolt vertex helyettesítõdik az új vertexszel. A glBegin(TRIANGLE_STRIP) hívás után a mutató az A vertexre mutat, minden további vertex átkapcsolja a mutatót, így az elsõ vertex A vertexként, a második vertex B
vertexként, a harmadik A vertexként, ... van tárolva. Minden vertex, a harmadiktól kezdve, egy háromszöget specifikál az A és
B vertexszel.

                    1. ábra
                 háromszög sztrip

TRIANGLE_FAN (háromszög legyezõ): majdnem ugyanaz, mint a háromszög sorozat, azzal a kivétellel, hogy a két vertex közül az A vertex mindig az elsõként specifikált vertex, az összes többi pedig helyettesíti a B vertexet.

                    2. ábra
            TRIANGLE_FAN

TRIANGLES (független háromszögek): Minden i-re, a 3i+1-ik, 3i+2-ik illetve 3i+3-ik vertex határoz meg egy háromszöget,
ahol i = 0,1,2,...

                    3. ábra
                független háromszögek

QUAD_STRIP (négyszög sorozat): párhuzamos oldalakkal rendelkezõ téglalapokat hoz létre. Ha a specifikált vertexek: v1, v2, ..., vm, ahol vj a j-dikként specifikált vertex, akkor az i-dik négyszög vertexei(sorban) v2i, v2i+1, v2i+2, v2i+3, ahol i = 0,1,..., [m/2]

QUADS (független négyszögek):minden négy vertexbõl álló csoport egy független négyszöget specifikál. A 4j+1-ik, 4j+2-ik, 4j+3-ik és 4j+4-ik vertex specifikál egy négyszöget, minden j = 0, 1, 2, ...-re.

pl.: a

        glBegin(GL_TRIANGLES);
            glVertex3d(0.0, 0.0, 0.0);
            glVertex3d(0.0, 0.8, 0.0);
            glVertex3d(0.7, 0.4, 0.0);
        glEnd();

egy olyan háromszöget specifikál, mely  csúcsai a (0.0, 0.0, 0.0), (0.0, 0.8, 0.0) és (0.7, 0.4, 0.0) pontokban vannak.
 

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