summaryrefslogtreecommitdiffstats
path: root/src/Renderer.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/Renderer.h')
-rw-r--r--src/Renderer.h13
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;