X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Frenderer.h;h=2854bc8ff181f3ead7f0f19ec9b0ec56d79b0470;hp=ef17b3e62043ad847969f4b7e6102854e52fc55c;hb=HEAD;hpb=ccbcce1d5c7fae8ec644e465ac936f5c39000e57 diff --git a/source/renderer.h b/source/renderer.h deleted file mode 100644 index ef17b3e6..00000000 --- a/source/renderer.h +++ /dev/null @@ -1,113 +0,0 @@ -/* $Id$ - -This file is part of libmspgl -Copyright © 2011 Mikko Rasa, Mikkosoft Productions -Distributed under the LGPL -*/ - -#ifndef MSP_GL_RENDERER_H_ -#define MSP_GL_RENDERER_H_ - -#include -#include "matrix.h" - -namespace Msp { -namespace GL { - -class Batch; -class Buffer; -class Camera; -class Material; -class Program; -class ProgramData; -class Texture; -class Texturing; -class VertexArray; -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. */ -class Renderer -{ -public: - class Push - { - private: - Renderer &renderer; - - public: - Push(Renderer &r): renderer(r) { renderer.push_state(); } - ~Push() { renderer.pop_state(); } - }; - -private: - struct State - { - const Texture *texture; - const Texturing *texturing; - const Material *material; - const Program *shprog; - std::vector shdata; - const WindingTest *winding_test; - - State(); - }; - - class MtxStack: public MatrixStack - { - private: - Renderer &renderer; - - public: - MtxStack(Renderer &); - private: - virtual void update(); - }; - - MtxStack mtx_stack; - bool mtx_changed; - const Camera *camera; - std::list state_stack; - State *state; - const VertexArray *vertex_array; - bool vertex_array_changed; - const Buffer *element_buffer; - -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 *); - void set_material(const Material *); - void set_shader(const Program *, const ProgramData *); - void add_shader_data(const ProgramData *); - void set_vertex_array(const VertexArray *); - void set_element_buffer(const Buffer *); - void set_winding_test(const WindingTest *); - - void push_state(); - void pop_state(); - - /** Prepares for temporarily bypassing the Renderer. */ - void escape(); - - void draw(const Batch &); - -private: - void apply_state(); -}; - -} // namespace GL -} // namespace Msp - -#endif