dungeon_crawler

diff prototype/src/mesh.cc @ 10:22562582c82d

foo
author John Tsiombikas <nuclear@member.fsf.org>
date Sat, 18 Aug 2012 03:47:13 +0300
parents 8fb37db44fd8
children e5567ddbf2ef
line diff
     1.1 --- a/prototype/src/mesh.cc	Fri Aug 17 17:25:42 2012 +0300
     1.2 +++ b/prototype/src/mesh.cc	Sat Aug 18 03:47:13 2012 +0300
     1.3 @@ -1,6 +1,13 @@
     1.4 +#include <stdio.h>
     1.5 +#include <stdlib.h>
     1.6  #include "mesh.h"
     1.7  #include "opengl.h"
     1.8  
     1.9 +/*
    1.10 +#define DBG_NORMALS
    1.11 +#define NSZ		0.1
    1.12 +*/
    1.13 +
    1.14  Mesh::Mesh()
    1.15  {
    1.16  	nverts = nfaces = 0;
    1.17 @@ -146,5 +153,39 @@
    1.18  		glDisableVertexAttribArray(tang_loc);
    1.19  	}
    1.20  
    1.21 +#ifdef DBG_NORMALS
    1.22 +	glPushAttrib(GL_ENABLE_BIT);
    1.23 +	glDisable(GL_LIGHTING);
    1.24 +
    1.25 +	int prog;
    1.26 +	glGetIntegerv(GL_CURRENT_PROGRAM, &prog);
    1.27 +	glUseProgram(0);
    1.28 +
    1.29 +	Vector3 *varr, *narr;
    1.30 +
    1.31 +	glBindBuffer(GL_ARRAY_BUFFER, vbo[MESH_ATTR_VERTEX]);
    1.32 +	varr = (Vector3*)glMapBuffer(GL_ARRAY_BUFFER, GL_READ_ONLY);
    1.33 +
    1.34 +	glBindBuffer(GL_ARRAY_BUFFER, vbo[MESH_ATTR_NORMAL]);
    1.35 +	narr = (Vector3*)glMapBuffer(GL_ARRAY_BUFFER, GL_READ_ONLY);
    1.36 +
    1.37 +	glBegin(GL_LINES);
    1.38 +	for(unsigned int i=0; i<nverts; i++) {
    1.39 +		glColor3f(0, 1, 0);
    1.40 +		glVertex3f(varr->x, varr->y, varr->z);
    1.41 +		glVertex3f(varr->x + narr->x * NSZ, varr->y + narr->y * NSZ, varr->z + narr->z * NSZ);
    1.42 +		varr++;
    1.43 +		narr++;
    1.44 +	}
    1.45 +	glEnd();
    1.46 +
    1.47 +	glUnmapBuffer(GL_ARRAY_BUFFER);
    1.48 +	glBindBuffer(GL_ARRAY_BUFFER, vbo[MESH_ATTR_VERTEX]);
    1.49 +	glUnmapBuffer(GL_ARRAY_BUFFER);
    1.50 +
    1.51 +	glUseProgram(prog);
    1.52 +	glPopAttrib();
    1.53 +#endif
    1.54 +
    1.55  	glPopMatrix();
    1.56  }