From c883f50f90d6f0fcfa3bee94e974ede149c35ca6 Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Thu, 24 Dec 2009 20:38:40 +0100 Subject: Refactored TriangleRecord --- src/Renderer.h | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) (limited to 'src/Renderer.h') diff --git a/src/Renderer.h b/src/Renderer.h index 8072158..a66504a 100644 --- a/src/Renderer.h +++ b/src/Renderer.h @@ -21,9 +21,11 @@ #define ZOOM_RENDERER_H_ #include "gl.h" -#include "BSPTree.h" + #include "Shader.h" #include "ShadowVolume.h" +#include "TriangleRecord.h" + #include @@ -43,7 +45,7 @@ class Renderer { // Create shadow volumes std::vector shadowVolumes; for(typename T::const_iterator t = triangles.begin(); t != triangles.end(); ++t) { - shadowVolumes.push_back(ShadowVolume(t->triangle, lightPos)); + shadowVolumes.push_back(ShadowVolume(t->getTriangle(), lightPos)); } @@ -56,11 +58,11 @@ class Renderer { glStencilFunc(GL_ALWAYS, 0, std::numeric_limits::max()); glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP); - useTexture(triangles.front().triangle.getTexture()); + useTexture(triangles.front().getTriangle().getTexture()); glBegin(GL_TRIANGLES); for(typename T::const_iterator t = triangles.begin(); t != triangles.end(); ++t) { - renderTriangle(t->triangle); + renderTriangle(t->getTriangle()); } glEnd(); @@ -71,7 +73,8 @@ class Renderer { glDepthMask(GL_FALSE); glCullFace(GL_FRONT); - glStencilOp(GL_KEEP, GL_INCR, GL_KEEP); + glDepthFunc(GL_GEQUAL); + glStencilOp(GL_KEEP, GL_KEEP, GL_INCR); glBegin(GL_TRIANGLES); for(std::vector::iterator v = shadowVolumes.begin(); v != shadowVolumes.end(); ++v) { @@ -80,7 +83,7 @@ class Renderer { glEnd(); glCullFace(GL_BACK); - glStencilOp(GL_KEEP, GL_DECR, GL_KEEP); + glStencilOp(GL_KEEP, GL_KEEP, GL_DECR); glBegin(GL_TRIANGLES); for(std::vector::iterator v = shadowVolumes.begin(); v != shadowVolumes.end(); ++v) { @@ -98,18 +101,18 @@ class Renderer { glStencilFunc(GL_EQUAL, 0, std::numeric_limits::max()); glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP); - useTexture(triangles.front().triangle.getTexture()); + useTexture(triangles.front().getTriangle().getTexture()); glBegin(GL_TRIANGLES); for(typename T::const_iterator t = triangles.begin(); t != triangles.end(); ++t) { - renderTriangle(t->triangle); + renderTriangle(t->getTriangle()); } glEnd(); } struct TextureSorter { - bool operator() (const BSPTree::TriangleRecord &t1, const BSPTree::TriangleRecord &t2) { - return (t1.triangle.getTexture() < t2.triangle.getTexture()); + bool operator() (const TriangleRecord &t1, const TriangleRecord &t2) { + return (t1.getTriangle().getTexture() < t2.getTriangle().getTexture()); } }; @@ -122,8 +125,8 @@ class Renderer { public: RenderVisitor(Renderer *renderer0) : renderer(renderer0) {} - void operator() (const BSPTree::TriangleRecord &t) const { - renderer->renderTriangle(t.triangle); + void operator() (const TriangleRecord &t) const { + renderer->renderTriangle(t.getTriangle()); } private: -- cgit v1.2.3