dungeon_crawler

diff prototype/src/light.cc @ 60:aa86119e3295

added multipass deferred
author John Tsiombikas <nuclear@member.fsf.org>
date Tue, 25 Sep 2012 06:19:37 +0300
parents f3030df27110
children f55ddab0f3a4
line diff
     1.1 --- a/prototype/src/light.cc	Fri Sep 21 05:28:45 2012 +0300
     1.2 +++ b/prototype/src/light.cc	Tue Sep 25 06:19:37 2012 +0300
     1.3 @@ -4,6 +4,8 @@
     1.4  #include "renderer.h"
     1.5  #include "timer.h"
     1.6  
     1.7 +unsigned int PointLight::sph_vbo = 0;
     1.8 +
     1.9  Light::Light(const Color &col)
    1.10  	: color(col)
    1.11  {
    1.12 @@ -159,6 +161,13 @@
    1.13  
    1.14  bool PointLight::create_mesh()
    1.15  {
    1.16 +	if(sph_vbo) {
    1.17 +		vbo = sph_vbo;
    1.18 +		return true;
    1.19 +	}
    1.20 +
    1.21 +	printf("building sphere mesh for point light drawing\n");
    1.22 +
    1.23  	const static int udiv = 8;
    1.24  	const static int vdiv = 4;
    1.25  
    1.26 @@ -169,8 +178,8 @@
    1.27  	float du = 1.0 / (float)udiv;
    1.28  	float dv = 1.0 / (float)vdiv;
    1.29  
    1.30 -	glGenBuffers(1, &vbo);
    1.31 -	glBindBuffer(GL_ARRAY_BUFFER, vbo);
    1.32 +	glGenBuffers(1, &sph_vbo);
    1.33 +	glBindBuffer(GL_ARRAY_BUFFER, sph_vbo);
    1.34  	glBufferData(GL_ARRAY_BUFFER, nverts * sizeof(Vector3), 0, GL_STATIC_DRAW);
    1.35  
    1.36  	Vector3 *vptr = (Vector3*)glMapBuffer(GL_ARRAY_BUFFER, GL_WRITE_ONLY);
    1.37 @@ -191,6 +200,8 @@
    1.38  	}
    1.39  	glUnmapBuffer(GL_ARRAY_BUFFER);
    1.40  	glBindBuffer(GL_ARRAY_BUFFER, 0);
    1.41 +
    1.42 +	vbo = sph_vbo;
    1.43  	return true;
    1.44  }
    1.45