]> 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 973e1b0..0000000
+++ /dev/null
@@ -1,188 +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 Clipping;
-class Material;
-class Mesh;
-class Lighting;
-class Program;
-class Renderable;
-class Texture;
-class Texturing;
-class VertexSetup;
-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 Camera *camera;
-               Matrix modelview_matrix;
-               const Texture *texture;
-               const Texturing *texturing;
-               unsigned lowest_effect_texunit;
-               const Material *material;
-               const Lighting *lighting;
-               Matrix lighting_matrix;
-               const Clipping *clipping;
-               Matrix clipping_matrix;
-               const Program *shprog;
-               unsigned shdata_count;
-               const Mesh *mesh;
-               const VertexSetup *vertex_setup;
-               const WindingTest *winding_test;
-               bool reverse_winding;
-               unsigned object_lod_bias;
-
-               State();
-       };
-
-       enum ChangeMask
-       {
-               LEGACY_MATRIX = 1,
-               MODERN_MATRIX = 2,
-               MATRIX = LEGACY_MATRIX|MODERN_MATRIX,
-               LEGACY_LIGHTING = 4,
-               LEGACY_CLIPPING = 8,
-               SHADER_DATA = 16,
-               MATERIAL_SHDATA = 32,
-               STANDARD_SHDATA = 64,
-               LEGACY_PROJECTION = 128
-       };
-
-       const Camera *default_camera;
-       unsigned char changed;
-       bool matrices_loaded;
-       std::vector<State> state_stack;
-       State *state;
-       ProgramData standard_shdata;
-       std::vector<const ProgramData *> shdata_stack;
-       std::set<const Renderable *> excluded;
-
-public:
-       Renderer(const Camera *);
-       ~Renderer();
-
-       /** Resets all internal state and restarts rendering.  There must be no
-       unpopped state in the stack.  It is permissible to call begin() multiple
-       times without an intervening end().
-
-       Deprecated; use end() and set_camera() instead.*/
-       void begin(const Camera *);
-
-       /** Sets the camera to render from.  The modelview matrix is reset to the
-       camera's view matrix. */
-       void set_camera(const Camera &);
-
-       const Camera *get_camera() const { return state->camera; }
-
-       /** Replaces the Renderer's modelview matrix. */
-       void set_matrix(const Matrix &);
-
-       /** Applies a transform to the Renderer's modelview matrix. */
-       void transform(const Matrix &);
-
-       /** Returns the current modelview matrix. */
-       const Matrix &get_matrix() const { return state->modelview_matrix; }
-
-       void set_texture(const Texture *);
-       void set_texturing(const Texturing *);
-       unsigned allocate_effect_texunit();
-       void set_material(const Material *);
-
-       void set_lighting(const Lighting *);
-       void set_clipping(const Clipping *);
-
-       /** 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_vertex_setup(const VertexSetup *);
-       void set_winding_test(const WindingTest *);
-       void set_reverse_winding(bool);
-
-       void set_object_lod_bias(unsigned);
-       unsigned get_object_lod_bias() const { return state->object_lod_bias; }
-
-       /** 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();
-
-       /** Unbinds all objects and resets related state.  There must be no unpopped
-       state in the stack.  The Renderer remains valid and may be reused for
-       further rendering. */
-       void end();
-
-       void exclude(const Renderable &);
-       void include(const Renderable &);
-
-       void render(const Renderable &, const Tag & = Tag());
-       void draw(const Batch &);
-       void draw_instanced(const Batch &, unsigned);
-
-private:
-       void apply_state();
-};
-
-} // namespace GL
-} // namespace Msp
-
-#endif