X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Frenderer.h;h=973e1b00263330101aca291ccef3c38a75e5e82c;hp=1f4624ce889476370c25fef2e0077db723c8ded1;hb=2341b3575c874b1960814264fa759ad584bf3134;hpb=bfc7f104c642590fd85577a6545c6bc6259ccaa4 diff --git a/source/renderer.h b/source/renderer.h index 1f4624ce..973e1b00 100644 --- a/source/renderer.h +++ b/source/renderer.h @@ -21,6 +21,7 @@ class Program; class Renderable; class Texture; class Texturing; +class VertexSetup; class WindingTest; /** @@ -77,8 +78,10 @@ private: 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(); }; @@ -96,9 +99,9 @@ private: LEGACY_PROJECTION = 128 }; + const Camera *default_camera; unsigned char changed; bool matrices_loaded; - unsigned shdata_applied; std::vector state_stack; State *state; ProgramData standard_shdata; @@ -111,7 +114,9 @@ public: /** 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(). */ + 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 @@ -147,9 +152,13 @@ public: 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(); @@ -157,14 +166,9 @@ public: 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(); - /** Unbinds all objects and resets related state. There must be no unpopped - state in the stack. Rendering with the same camera can be restarted without - an explicit begin() call. */ + state in the stack. The Renderer remains valid and may be reused for + further rendering. */ void end(); void exclude(const Renderable &); @@ -172,10 +176,10 @@ public: void render(const Renderable &, const Tag & = Tag()); void draw(const Batch &); + void draw_instanced(const Batch &, unsigned); private: void apply_state(); - void reset_state(); }; } // namespace GL