diff options
Diffstat (limited to 'src/Renderer.h')
-rw-r--r-- | src/Renderer.h | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/src/Renderer.h b/src/Renderer.h index 1b6f91b..8072158 100644 --- a/src/Renderer.h +++ b/src/Renderer.h @@ -65,31 +65,31 @@ class Renderer { glEnd(); // Render shadow volumes + Shader::enable(nullShader); glClear(GL_STENCIL_BUFFER_BIT); glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE); glDepthMask(GL_FALSE); - glFrontFace(GL_CCW); + glCullFace(GL_FRONT); glStencilOp(GL_KEEP, GL_INCR, GL_KEEP); glBegin(GL_TRIANGLES); for(std::vector<ShadowVolume>::iterator v = shadowVolumes.begin(); v != shadowVolumes.end(); ++v) { - v->render(); + renderShadowVolume(*v); } glEnd(); - glFrontFace(GL_CW); + glCullFace(GL_BACK); glStencilOp(GL_KEEP, GL_DECR, GL_KEEP); glBegin(GL_TRIANGLES); for(std::vector<ShadowVolume>::iterator v = shadowVolumes.begin(); v != shadowVolumes.end(); ++v) { - v->render(); + renderShadowVolume(*v); } glEnd(); glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); glDepthMask(GL_TRUE); - glFrontFace(GL_CCW); // Render with point light Shader::enable(lightShader); @@ -115,6 +115,7 @@ class Renderer { private: void renderTriangle(const Triangle &t); + static void renderShadowVolume(const ShadowVolume &v); void useTexture(unsigned texture); class RenderVisitor { @@ -129,7 +130,7 @@ class Renderer { Renderer *renderer; }; - boost::shared_ptr<Shader> ambientShader, lightShader; + boost::shared_ptr<Shader> nullShader, ambientShader, lightShader; unsigned activeTexture; const RenderVisitor renderVisitor; |