summaryrefslogtreecommitdiffstats
path: root/src/Renderer.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/Renderer.h')
-rw-r--r--src/Renderer.h27
1 files changed, 15 insertions, 12 deletions
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 <limits>
@@ -43,7 +45,7 @@ class Renderer {
// Create shadow volumes
std::vector<ShadowVolume> 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<GLuint>::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<ShadowVolume>::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<ShadowVolume>::iterator v = shadowVolumes.begin(); v != shadowVolumes.end(); ++v) {
@@ -98,18 +101,18 @@ class Renderer {
glStencilFunc(GL_EQUAL, 0, std::numeric_limits<GLuint>::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: