]> git.tdb.fi Git - libs/gl.git/blobdiff - source/renderer.h
Check the flat qualifier from the correct member
[libs/gl.git] / source / renderer.h
diff --git a/source/renderer.h b/source/renderer.h
deleted file mode 100644 (file)
index a3ddaa3..0000000
+++ /dev/null
@@ -1,168 +0,0 @@
-#ifndef MSP_GL_RENDERER_H_
-#define MSP_GL_RENDERER_H_
-
-#include <set>
-#include <vector>
-#include "matrix.h"
-#include "programdata.h"
-#include "tag.h"
-
-namespace Msp {
-namespace GL {
-
-class Batch;
-class Buffer;
-class Camera;
-class Material;
-class Mesh;
-class Lighting;
-class Program;
-class Renderable;
-class Texture;
-class Texturing;
-class WindingTest;
-
-/**
-A class for supervising the rendering process.  While many Renderables (in
-particular, Objects and Scenes) can by rendered without a Renderer, using one
-will often be more efficient.  This is especially true for ObjectInstances.
-
-The Renderer works by deferring GL state changes until something is actually
-being drawn.  This avoids many unnecessary GL calls if consecutive renderables
-use the same resources.
-
-A state stack is provided to help with state scoping.  Typically a Renderable
-will push the current state on entry, set whatever state it requires, render
-itself, and pop the state when it's done.  An RAII helper class is provided for
-the push/pop operation.
-*/
-class Renderer
-{
-public:
-       class Push
-       {
-       private:
-               Renderer &renderer;
-
-       public:
-               Push(Renderer &r): renderer(r) { renderer.push_state(); }
-               ~Push() { renderer.pop_state(); }
-       };
-
-       class Exclude
-       {
-       private:
-               Renderer &renderer;
-               const Renderable &renderable;
-
-       public:
-               Exclude(Renderer &r, const Renderable &e): renderer(r), renderable(e) { renderer.exclude(renderable); }
-               ~Exclude() { renderer.include(renderable); }
-       };
-
-private:
-       struct State
-       {
-               const Texture *texture;
-               const Texturing *texturing;
-               unsigned lowest_effect_texunit;
-               const Material *material;
-               const Lighting *lighting;
-               Matrix lighting_matrix;
-               const Program *shprog;
-               unsigned shdata_count;
-               const Mesh *mesh;
-               const WindingTest *winding_test;
-               bool reverse_winding;
-
-               State();
-       };
-
-       class MtxStack: public MatrixStack
-       {
-       private:
-               Renderer &renderer;
-
-       public:
-               MtxStack(Renderer &);
-       private:
-               virtual void update();
-       };
-
-       enum ChangeMask
-       {
-               MATRIX = 1,
-               LIGHTING = 4,
-               SHADER_DATA = 8
-       };
-
-       MtxStack mtx_stack;
-       unsigned char changed;
-       bool matrices_loaded;
-       const Camera *camera;
-       std::vector<State> state_stack;
-       State *state;
-       ProgramData standard_shdata;
-       std::vector<const ProgramData *> shdata_stack;
-       const Buffer *element_buffer;
-       std::set<const Renderable *> excluded;
-
-public:
-       Renderer(const Camera *);
-       ~Renderer();
-
-       MatrixStack &matrix_stack() { return mtx_stack; }
-
-       const Camera *get_camera() const { return camera; }
-
-       void set_texture(const Texture *);
-       void set_texturing(const Texturing *);
-       unsigned allocate_effect_texunit();
-       void set_material(const Material *);
-
-       void set_lighting(const Lighting *);
-
-       /** Sets the shader program to use.  An initial set of data can be set as
-       well, with the same semantics as add_shader_data. */
-       void set_shader_program(const Program *prog, const ProgramData *data = 0);
-
-       /** Adds another set of data to be use with shader programs.  The data is
-       independent of any shader program changes and remains in effect until the
-       Renderer state is popped. */
-       void add_shader_data(const ProgramData &data);
-
-       void set_mesh(const Mesh *);
-       void set_element_buffer(const Buffer *);
-       void set_winding_test(const WindingTest *);
-       void set_reverse_winding(bool);
-
-       /** Saves the current state so it can be restored later. */
-       void push_state();
-
-       /** Restores a previously saved state.  Must be matched with an earlier
-       push_state call. */
-       void pop_state();
-
-       /** Prepares for temporarily bypassing the Renderer by synchronizing the
-       current state with GL.  No additional call is necessary to resume using the
-       Renderer.  DEPRECATED. */
-       void escape();
-
-       /** Ends rendering, unbinding all objects and resetting state.  There must
-       be no unpopped state in the stack. */
-       void end();
-
-       void exclude(const Renderable &);
-       void include(const Renderable &);
-
-       void render(const Renderable &, const Tag & = Tag());
-       void draw(const Batch &);
-
-private:
-       void apply_state();
-};
-
-} // namespace GL
-} // namespace Msp
-
-#endif