X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Feffect.h;h=bc9e19ec818f2a392889866bdf36428c7c00024b;hb=34811e25cb7ec22d5b156cd00485aa82687f000a;hp=e99bc2576d9eb97220faed58f214b790779ab085;hpb=db498c7e634fa999cf4b4a8b67c49813009b1790;p=libs%2Fgl.git diff --git a/source/effect.h b/source/effect.h index e99bc257..bc9e19ec 100644 --- a/source/effect.h +++ b/source/effect.h @@ -2,11 +2,14 @@ #define MSP_GL_EFFECT_H_ #include +#include #include "renderable.h" namespace Msp { namespace GL { +class Sampler; + /** Effects are used to wrap other renderables and give them additional visual properties. An Effect's render method should set up the necessary state, call @@ -15,10 +18,14 @@ the wrapped Renderable's render method, and clean up after itself. class Effect: public Renderable { protected: - const Renderable &renderable; + Renderable &renderable; std::set enabled_passes; - Effect(const Renderable &); +private: + static WeakPtr linear_sampler; + +protected: + Effect(Renderable &); public: virtual ~Effect() { } @@ -26,9 +33,13 @@ public: void disable_for_pass(const Tag &); virtual const Matrix *get_matrix() const { return renderable.get_matrix(); } + virtual const Geometry::BoundingSphere *get_bounding_sphere() const { return renderable.get_bounding_sphere(); } - virtual void setup_frame() const { renderable.setup_frame(); } - virtual void finish_frame() const { renderable.finish_frame(); } + virtual void setup_frame(Renderer &r) { renderable.setup_frame(r); } + virtual void finish_frame() { renderable.finish_frame(); } + +protected: + static RefPtr get_linear_sampler(); }; } // namespace GL