annotate 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 |
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 }
|