intravenous

annotate src/geom.cc @ 2:472c28b8b875

I think I pretty much nailed the camera
author John Tsiombikas <nuclear@member.fsf.org>
date Sat, 21 Apr 2012 23:03:36 +0300
parents
children 94d4c60af435
rev   line source
nuclear@1 1 #include "opengl.h"
nuclear@1 2 #include "geom.h"
nuclear@1 3
nuclear@1 4 #ifdef SINGLE_PRECISION_MATH
nuclear@1 5 #define ELEM_TYPE GL_FLOAT
nuclear@1 6 #else
nuclear@1 7 #define ELEM_TYPE GL_DOUBLE
nuclear@1 8 #endif
nuclear@1 9
nuclear@1 10 void draw_mesh(unsigned int prim, int num_verts, const Vertex *vbuf, const unsigned int *ibuf)
nuclear@1 11 {
nuclear@1 12 glEnableClientState(GL_VERTEX_ARRAY);
nuclear@1 13 glVertexPointer(3, ELEM_TYPE, sizeof *vbuf, &vbuf->pos);
nuclear@1 14
nuclear@1 15 glEnableClientState(GL_NORMAL_ARRAY);
nuclear@1 16 glNormalPointer(ELEM_TYPE, sizeof *vbuf, &vbuf->norm);
nuclear@1 17
nuclear@1 18 glEnableClientState(GL_TEXTURE_COORD_ARRAY);
nuclear@1 19 glTexCoordPointer(2, ELEM_TYPE, sizeof *vbuf, &vbuf->tc);
nuclear@1 20
nuclear@1 21 if(ibuf) {
nuclear@1 22 glDrawElements(prim, num_verts, GL_UNSIGNED_INT, ibuf);
nuclear@1 23 } else {
nuclear@1 24 glDrawArrays(prim, 0, num_verts);
nuclear@1 25 }
nuclear@1 26
nuclear@1 27 glDisableClientState(GL_VERTEX_ARRAY);
nuclear@1 28 glDisableClientState(GL_NORMAL_ARRAY);
nuclear@1 29 glDisableClientState(GL_TEXTURE_COORD_ARRAY);
nuclear@1 30 #if 0
nuclear@1 31 glBegin(GL_QUADS);
nuclear@1 32 for(int i=0; i<count; i++) {
nuclear@1 33 for(int j=0; j<4; j++) {
nuclear@1 34 const Vertex *v = vbuf + ibuf[i * 4 + j];
nuclear@1 35 glNormal3f(v->norm.x, v->norm.y, v->norm.z);
nuclear@1 36 glVertex3f(v->pos.x, v->pos.y, v->pos.z);
nuclear@1 37 }
nuclear@1 38 }
nuclear@1 39 glEnd();
nuclear@1 40 #endif
nuclear@1 41 }