class RendererLight
{
public:
+virtual ~RendererLight(){}
virtual Shader* getShader() const = 0;
virtual const AABB& aabb() const = 0;
virtual bool testAABB( const AABB& other ) const = 0;
class LightCullable
{
public:
+virtual ~LightCullable(){}
virtual bool testLight( const RendererLight& light ) const = 0;
virtual void insertLight( const RendererLight& light ){
}
class LightList
{
public:
+virtual ~LightList(){}
virtual void evaluateLights() const = 0;
virtual void lightsChanged() const = 0;
virtual void forEachLight( const RendererLightCallback& callback ) const = 0;
class OpenGLRenderable
{
public:
+virtual ~OpenGLRenderable(){}
virtual void render( RenderStateFlags state ) const = 0;
};
class Shader
{
public:
+virtual ~Shader(){}
virtual void addRenderable( const OpenGLRenderable& renderable, const Matrix4& modelview, const LightList* lights = 0 ) = 0;
virtual void incrementUsed() = 0;
virtual void decrementUsed() = 0;
INTEGER_CONSTANT( Version, 1 );
STRING_CONSTANT( Name, "renderstate" );
+virtual ~ShaderCache(){}
virtual Shader* capture( const char* name ) = 0;
virtual void release( const char* name ) = 0;
/*! Render all Shader objects. */