14 #ifndef OSG_SHADERATTRIBUTE
15 #define OSG_SHADERATTRIBUTE 1
17 #include <osg/StateAttribute>
19 #include <osg/Uniform>
36 virtual const char*
className()
const {
return "ShaderAttribute"; }
42 void setType(Type
type);
45 unsigned int addShader(
Shader* shader) {
return _shaderComponent->addShader(shader); }
46 void removeShader(
unsigned int i) { _shaderComponent->removeShader(i); }
47 unsigned int getNumShaders()
const {
return _shaderComponent->getNumShaders(); }
49 const Shader*
getShader(
unsigned int i)
const {
return _shaderComponent->getShader(i); }
51 unsigned int addUniform(
Uniform* uniform);
52 void removeUniform(
unsigned int i);
59 virtual void apply(
State& state)
const;
61 virtual void compileGLObjects(
State& state)
const;
63 virtual void resizeGLObjectBuffers(
unsigned int maxSize);
65 virtual void releaseGLObjects(
State* state=0)
const;
71 typedef std::vector< osg::ref_ptr<osg::Uniform> >
Uniforms;
const Uniform * getUniform(unsigned int i) const
virtual const char * libraryName() const
virtual const char * className() const
Shader * getShader(unsigned int i)
std::vector< osg::ref_ptr< osg::Uniform > > Uniforms
virtual bool isSameKindAs(const osg::Object *obj) const
virtual osg::Object * clone(const osg::CopyOp ©op) const
Uniform * getUniform(unsigned int i)
unsigned int getNumShaders() const
T * cloneType(const T *t)
GLint GLenum GLsizei GLsizei GLsizei GLint GLenum GLenum type
unsigned int getNumUniforms() const
unsigned int addShader(Shader *shader)
const Shader * getShader(unsigned int i) const
void removeShader(unsigned int i)
virtual Type getType() const