Implement basic cache in ShadeComposer
This commit is contained in:
@@ -23,6 +23,8 @@ namespace osg {
|
||||
// forward declare osg::State
|
||||
class State;
|
||||
|
||||
typedef std::vector<osg::ShaderComponent*> ShaderComponents;
|
||||
|
||||
class OSG_EXPORT ShaderComposer : public osg::Object
|
||||
{
|
||||
public:
|
||||
@@ -31,12 +33,22 @@ class OSG_EXPORT ShaderComposer : public osg::Object
|
||||
ShaderComposer(const ShaderComposer& sa,const CopyOp& copyop=CopyOp::SHALLOW_COPY);
|
||||
META_Object(osg, ShaderComposer)
|
||||
|
||||
osg::Program* getOrCreateProgram() { return 0; }
|
||||
virtual osg::Program* getOrCreateProgram(const ShaderComponents& shaderComponents);
|
||||
|
||||
|
||||
typedef std::vector< const osg::Shader* > Shaders;
|
||||
virtual osg::Shader* composeMain(const Shaders& shaders);
|
||||
|
||||
protected:
|
||||
|
||||
virtual ~ShaderComposer();
|
||||
|
||||
typedef std::map< ShaderComponents, ref_ptr<Program> > ProgramMap;
|
||||
ProgramMap _programMap;
|
||||
|
||||
typedef std::map< Shaders, ref_ptr<Shader> > ShaderMainMap;
|
||||
ShaderMainMap _shaderMainMap;
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user