intravenous

diff src/geom.cc @ 3:94d4c60af435

some progress
author John Tsiombikas <nuclear@member.fsf.org>
date Sun, 22 Apr 2012 03:35:18 +0300
parents 3ea290d35984
children
line diff
     1.1 --- a/src/geom.cc	Sat Apr 21 23:03:36 2012 +0300
     1.2 +++ b/src/geom.cc	Sun Apr 22 03:35:18 2012 +0300
     1.3 @@ -7,7 +7,7 @@
     1.4  #define ELEM_TYPE		GL_DOUBLE
     1.5  #endif
     1.6  
     1.7 -void draw_mesh(unsigned int prim, int num_verts, const Vertex *vbuf, const unsigned int *ibuf)
     1.8 +void draw_mesh(unsigned int prim, int num_verts, const Vertex *vbuf, const unsigned int *ibuf, int attr_tang_loc)
     1.9  {
    1.10  	glEnableClientState(GL_VERTEX_ARRAY);
    1.11  	glVertexPointer(3, ELEM_TYPE, sizeof *vbuf, &vbuf->pos);
    1.12 @@ -18,6 +18,11 @@
    1.13  	glEnableClientState(GL_TEXTURE_COORD_ARRAY);
    1.14  	glTexCoordPointer(2, ELEM_TYPE, sizeof *vbuf, &vbuf->tc);
    1.15  
    1.16 +	if(attr_tang_loc >= 0) {
    1.17 +		glEnableVertexAttribArrayARB(attr_tang_loc);
    1.18 +		glVertexAttribPointerARB(attr_tang_loc, 3, ELEM_TYPE, GL_FALSE, sizeof *vbuf, &vbuf->tang);
    1.19 +	}
    1.20 +
    1.21  	if(ibuf) {
    1.22  		glDrawElements(prim, num_verts, GL_UNSIGNED_INT, ibuf);
    1.23  	} else {
    1.24 @@ -27,6 +32,10 @@
    1.25  	glDisableClientState(GL_VERTEX_ARRAY);
    1.26  	glDisableClientState(GL_NORMAL_ARRAY);
    1.27  	glDisableClientState(GL_TEXTURE_COORD_ARRAY);
    1.28 +
    1.29 +	if(attr_tang_loc >= 0) {
    1.30 +		glDisableVertexAttribArrayARB(attr_tang_loc);
    1.31 +	}
    1.32  #if 0
    1.33  	glBegin(GL_QUADS);
    1.34  	for(int i=0; i<count; i++) {