From ff7b7c8838f55dc0f2e76f903630f1d3d2941d5a Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Mon, 14 Dec 2009 13:54:34 +0100 Subject: Added everything... -.- --- Renderer.h | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) (limited to 'Renderer.h') diff --git a/Renderer.h b/Renderer.h index d64a4fe..d72b5bb 100644 --- a/Renderer.h +++ b/Renderer.h @@ -20,25 +20,35 @@ #ifndef ZOOM_RENDERER_H_ #define ZOOM_RENDERER_H_ -namespace Zoom { +#include "BSPTree.h" -class Triangle; -class BSPTree; +namespace Zoom { class Renderer { public: + Renderer() : lastTexture(0), renderVisitor(this) {} + void render(const BSPTree &tree); + void render(const std::list &triangles); private: - static void renderTriangle(const Triangle &t); + void renderTriangle(const Triangle &t); - struct RenderVisitor { - void operator() (const Triangle &t) const { - renderTriangle(t); + class RenderVisitor { + public: + RenderVisitor(Renderer *renderer0) : renderer(renderer0) {} + + void operator() (const BSPTree::TriangleRecord &t) const { + renderer->renderTriangle(t.triangle); } + + private: + Renderer *renderer; }; - static const RenderVisitor renderVisitor; + unsigned lastTexture; + + const RenderVisitor renderVisitor; }; } -- cgit v1.2.3