A napokban lettem kész az (alap) opengl wrapperemmel, ami lazán annyit jelent, hogy van egy osztályom, melynek minden opengl (1.1!) függvény tagfüggvénye. Ez most úgy néz ki, kis túlzással, mint a DX. Az engine render context osztályának van egy példánya ebből a wrapperből, s ezen keresztül hivogatom az ogl-es fv.-ket.
Na, kis példa, hogy miről is beszélek:
ptrCore->wfglColor3f(1.0f, 1.0f, 0.0f);
ptrCore->wfglPointSize(5.0f);
ptrCore->wfglPushMatrix();
ptrCore->wfglRotatef(rot, 0.0f, 1.0f, 0.0f);
ptrCore->wfglBegin(GL_TRIANGLES);
ptrCore->wfglVertex3f(-2.0f, 0.0f, -2.0f);
ptrCore->wfglVertex3f(2.0f, 0.0f, -2.0f);
ptrCore->wfglVertex3f(2.0f, 0.0f, 2.0f);
ptrCore->wfglEnd();
ptrCore->wfglPopMatrix();
Ez igy miért is jó? Főleg, és emiatt irtam is meg, hogy nyomon tudjam követni az ogl hivásokat, magyarul, nem tudom minden honnan össze-vissza hivogatni a függvényeket. Ez pedig jó. Egyébként még azt is piszok egyszerű lekezelni, hogy egy-egy fv. hivás után keletkezett-e belső (glGetError, vagy valami ilyesmi a neve
) hiba. Debug módban erre kapok egy MessageBox-ot, hogy ez, meg ez a gl hivás sikertelen volt.
Persze, ezzel a wrapperes megoldással arra is kényszeritem magam, hogy logikusabban tervezzem a felépitését az egész rendszernek, elvégre fontolóra kell venni, ki, mit, hogyan érhet el. Szerintem ez is jó. 
Jah, igen, emlitettem, hogy ez "vanilla" opengl wrapper, ergo a kiterjesztéseket nem tartalmazza. Ezt is megoldottam :P, mégpedig úgy hogy az egész wrapper egy COGLWrapperExt osztályból származik, tehát már maga az OGLWrapper tartalmazza a kiterjesztéseket is (pl. glMultiTexCoordxx...).
Piszok sok gépelés minden függvényt (főleg az olyanokat mint a glVertexNX, ahol N=2-3-4, X=i, iv, s, sv, f, fv, d, dv, stb) leirni, de egyszer kell vele szivni.
Ha megleszek teljesen, akkor publikálni akarom az wgész wrapper osztályt, hátha másnak is jól jön majd.
Még annyit, hogy kikerült a jatekfejlesztes.hu-ra két cikkem (1, 2), melyekben a windows ablak, és az opengl render context létrehozását boncolgatom, főleg kezdőket célozva meg.