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