summaryrefslogtreecommitdiffstats
path: root/src/Renderer.h
diff options
context:
space:
mode:
authorMatthias Schiffer <matthias@gamezock.de>2009-12-24 12:14:51 +0100
committerMatthias Schiffer <matthias@gamezock.de>2009-12-24 12:14:51 +0100
commit577cd77e2be089a1bf2284e33e9b07fc36a4320b (patch)
tree2f15ea093a0d7936b1d07b5393729da0afc224f9 /src/Renderer.h
parent0f6fb2617e5234480994f954125f5c45d6d29e0b (diff)
downloadzoom++-577cd77e2be089a1bf2284e33e9b07fc36a4320b.tar
zoom++-577cd77e2be089a1bf2284e33e9b07fc36a4320b.zip
Some optimizations
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;