nuclear@1: #include "opengl.h" nuclear@1: #include "geom.h" nuclear@1: nuclear@1: #ifdef SINGLE_PRECISION_MATH nuclear@1: #define ELEM_TYPE GL_FLOAT nuclear@1: #else nuclear@1: #define ELEM_TYPE GL_DOUBLE nuclear@1: #endif nuclear@1: nuclear@1: void draw_mesh(unsigned int prim, int num_verts, const Vertex *vbuf, const unsigned int *ibuf) nuclear@1: { nuclear@1: glEnableClientState(GL_VERTEX_ARRAY); nuclear@1: glVertexPointer(3, ELEM_TYPE, sizeof *vbuf, &vbuf->pos); nuclear@1: nuclear@1: glEnableClientState(GL_NORMAL_ARRAY); nuclear@1: glNormalPointer(ELEM_TYPE, sizeof *vbuf, &vbuf->norm); nuclear@1: nuclear@1: glEnableClientState(GL_TEXTURE_COORD_ARRAY); nuclear@1: glTexCoordPointer(2, ELEM_TYPE, sizeof *vbuf, &vbuf->tc); nuclear@1: nuclear@1: if(ibuf) { nuclear@1: glDrawElements(prim, num_verts, GL_UNSIGNED_INT, ibuf); nuclear@1: } else { nuclear@1: glDrawArrays(prim, 0, num_verts); nuclear@1: } nuclear@1: nuclear@1: glDisableClientState(GL_VERTEX_ARRAY); nuclear@1: glDisableClientState(GL_NORMAL_ARRAY); nuclear@1: glDisableClientState(GL_TEXTURE_COORD_ARRAY); nuclear@1: #if 0 nuclear@1: glBegin(GL_QUADS); nuclear@1: for(int i=0; inorm.x, v->norm.y, v->norm.z); nuclear@1: glVertex3f(v->pos.x, v->pos.y, v->pos.z); nuclear@1: } nuclear@1: } nuclear@1: glEnd(); nuclear@1: #endif nuclear@1: }