intravenous

view src/geom.cc @ 1:3ea290d35984

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