183 void assign(
unsigned int size,
const unsigned char* data);
192 unsigned int getSize()
const {
return static_cast<unsigned int>(
_data.size()); }
308 if (lastAppliedUniform != &uniform)
#define GL_INVALID_INDEX
Definition GLDefines:320
The core osg library provides the basic scene graph classes such as Nodes, State and Drawables,...
Definition AlphaFunc:19
std::set< std::string > ShaderDefines
Definition Shader:37
Implements a simple buffered value for values that need to be buffered on a per graphics context basi...
Definition buffered_value:27
Copy Op(erator) used to control whether shallow or deep copy is used during copy construction and clo...
Definition CopyOp:41
@ SHALLOW_COPY
Definition CopyOp:47
Base class/standard interface for objects which require IO support, cloning and reference counting.
Definition Object:61
osg::Program is an application-level abstraction of an OpenGL glProgram.
Definition Program:52
unsigned int getNumShaders() const
Definition Program:91
std::map< std::string, GLuint > UniformBlockBindingList
Definition Program:219
Shader * getShader(unsigned int i)
Definition Program:93
virtual void apply(osg::State &state) const
If enabled, activate our program in the GL pipeline, performing any rebuild operations that might be ...
void addTransformFeedBackVarying(const std::string &outname)
Add a TransformFeedBack Varying Name.
Definition Program:137
ShaderDefines & getShaderDefines()
Definition Program:156
GLint _geometryOutputType
Definition Program:436
osg::ref_ptr< ProgramBinary > _programBinary
Definition Program:431
virtual void releaseGLObjects(osg::State *state=0) const
release OpenGL objects in specified graphics context if State object is passed, otherwise release Ope...
std::map< std::string, GLuint > FragDataBindingList
Definition Program:218
bool addShader(const ref_ptr< T > &shader)
Definition Program:89
std::map< std::string, GLuint > AttribBindingList
Definition Program:217
GLenum getTransformFeedBackMode() const
Get TransformFeedBack Mode.
Definition Program:152
void addBindFragDataLocation(const std::string &name, GLuint index)
Add an frag data location binding.
GLenum _feedbackmode
TransformFeedBack.
Definition Program:439
const ShaderDefines & getShaderDefines() const
Definition Program:157
UniformBlockBindingList _uniformBlockBindingList
Definition Program:426
virtual int compare(const osg::StateAttribute &sa) const
return -1 if *this < *rhs, 0 if *this==*rhs, 1 if *this>*rhs.
ShaderList _shaderList
Definition Program:429
std::vector< ref_ptr< Shader > > ShaderList
Definition Program:428
bool isFixedFunction() const
Return true if this Program represents "fixed-functionality" rendering.
virtual void setThreadSafeRefUnref(bool threadSafe)
Set whether to use a mutex to ensure ref() and unref() are thread safe.
Program(const Program &rhs, const osg::CopyOp ©op=osg::CopyOp::SHALLOW_COPY)
Copy constructor using CopyOp to manage deep vs shallow copy.
const Shader * getShader(unsigned int i) const
Definition Program:94
const std::string & getTransformFeedBackVarying(unsigned int i) const
Get const TransformFeedBack Varying at index i.
Definition Program:146
void removeBindAttribLocation(const std::string &name)
Remove an attribute location binding.
AttribBindingList _attribBindingList
Definition Program:424
bool addShader(Shader *shader)
Attach an osg::Shader to this osg::Program.
void removeBindFragDataLocation(const std::string &name)
Remove an frag data location binding.
void addBindUniformBlock(const std::string &name, GLuint index)
Add a uniform block binding to an index target.
GLint _geometryInputType
Definition Program:435
FragDataBindingList _fragDataBindingList
Definition Program:425
unsigned int getNumTransformFeedBackVaryings() const
Get number of TransformFeedBack Varyings.
Definition Program:143
std::vector< std::string > _feedbackout
Definition Program:440
void setTransformFeedBackMode(GLenum e)
Set TransformFeedBack Mode.
Definition Program:149
ProgramBinary * getProgramBinary()
Get the Program's ProgramBinary, return NULL if none is assigned.
Definition Program:212
void removeBindUniformBlock(const std::string &name)
Remove a uniform block binding.
std::map< std::string, ActiveVarInfo > ActiveVarInfoMap
Definition Program:239
bool removeShader(Shader *shader)
Remove osg::Shader from this osg::Program.
void removeTransformFeedBackVarying(const std::string &name)
Remove a TransformFeedBackVarying.
Definition Program:128
PerContextProgram * getPCP(State &state) const
Get the PCP for a particular GL context.
virtual void resizeGLObjectBuffers(unsigned int maxSize)
Resize any per context GLObject buffers to specified size.
void setProgramBinary(ProgramBinary *programBinary)
Set the Program using a ProgramBinary.
Definition Program:209
GLint getParameter(GLenum pname) const
const ProgramBinary * getProgramBinary() const
Get the const Program's ProgramBinary, return NULL if none is assigned.
Definition Program:215
const UniformBlockBindingList & getUniformBlockBindingList() const
Definition Program:223
osg::buffered_value< osg::ref_ptr< ProgramObjects > > _pcpList
Definition Program:423
bool removeShader(const ref_ptr< T > &shader)
Definition Program:100
void setParameter(GLenum pname, GLint value)
Set/get GL program parameters.
void addBindAttribLocation(const std::string &name, GLuint index)
Add an attribute location binding.
virtual void compileGLObjects(osg::State &state) const
Compile program and associated shaders.
GLint _geometryVerticesOut
Parameters maintained with glProgramParameteriEXT.
Definition Program:434
META_StateAttribute(osg, Program, PROGRAM)
std::map< unsigned int, ActiveVarInfo > ActiveUniformMap
Definition Program:238
const AttribBindingList & getAttribBindingList() const
Definition Program:221
const FragDataBindingList & getFragDataBindingList() const
Definition Program:222
void setShaderDefines(const ShaderDefines &shaderDefs)
Experimental.
Definition Program:155
std::map< std::string, UniformBlockInfo > UniformBlockMap
Definition Program:252
void dirtyProgram()
Mark our PCSOs as needing relink.
bool getGlProgramInfoLog(unsigned int contextID, std::string &log) const
Query InfoLog from a glProgram.
ShaderDefines _shaderDefines
Definition Program:442
Simple class for wrapping up the data used in glProgramBinary and glGetProgramBinary.
Definition Program:169
unsigned char * getData()
Get a ptr to the program binary data.
Definition Program:195
GLenum _format
Definition Program:202
GLenum getFormat() const
Get the format of the program binary data.
Definition Program:189
void assign(unsigned int size, const unsigned char *data)
Assign program binary data, copying the specified data into locally stored data buffer,...
void setFormat(GLenum format)
Set the format of the program binary data.
Definition Program:186
ProgramBinary(const ProgramBinary &rhs, const osg::CopyOp ©op=osg::CopyOp::SHALLOW_COPY)
Copy constructor using CopyOp to manage deep vs shallow copy.
unsigned int getSize() const
Get the size of the program binary data.
Definition Program:192
void allocate(unsigned int size)
Allocated a data buffer of specified size.
const unsigned char * getData() const
Get a const ptr to the program binary data.
Definition Program:198
std::vector< unsigned char > _data
Definition Program:201
META_Object(osg, ProgramBinary)
ActiveVarInfo(GLint loc, GLenum type, GLint size)
Definition Program:233
GLint _location
Definition Program:234
ActiveVarInfo()
Definition Program:232
GLint _size
Definition Program:236
GLenum _type
Definition Program:235
UniformBlockInfo(GLuint index, GLsizei size)
Definition Program:245
UniformBlockInfo()
Definition Program:244
GLsizei _size
Definition Program:250
GLuint _index
Definition Program:249
PerContextProgram (PCP) is an OSG-internal encapsulation of glPrograms per-GL context.
Definition Program:264
bool _needsLink
Does our glProgram need to be linked?
Definition Program:368
PerContextProgram(const Program *program, unsigned int contextID, GLuint programHandle=0)
Use "0" as programHandle to let the PeContextProgram execute "glCreateProgram"and "glDeleteProgram".
void addShaderToDetach(Shader *shader)
Definition Program:347
bool isLinked() const
Definition Program:280
UniformBlockMap _uniformBlockMap
Definition Program:381
void apply(const Uniform &uniform) const
Definition Program:302
const std::string & getDefineString() const
Definition Program:274
std::vector< ref_ptr< Shader > > ShaderList
Definition Program:387
virtual bool getInfoLog(std::string &infoLog) const
void setDefineString(const std::string &defStr)
Definition Program:273
GLint getAttribLocation(const std::string &name) const
Definition Program:340
bool _loadedBinary
Was glProgramBinary called successfully?
Definition Program:372
std::string _defineStr
Define string passed on to Shaders to help configure them.
Definition Program:365
LastAppliedUniformList _lastAppliedUniformList
Definition Program:385
std::map< unsigned int, UniformModifiedCountPair > LastAppliedUniformList
Definition Program:384
virtual ~PerContextProgram()
virtual void useProgram() const
void resetAppliedUniforms() const
Definition Program:296
virtual ProgramBinary * compileProgramBinary(osg::State &state)
Compile a program binary.
std::pair< osg::ref_ptr< const osg::Uniform >, unsigned int > UniformModifiedCountPair
Definition Program:383
osg::ref_ptr< GLExtensions > _extensions
Pointer to this context's extension functions.
Definition Program:359
bool _isLinked
Is our glProgram successfully linked?
Definition Program:370
ActiveVarInfoMap _attribInfoMap
Definition Program:380
GLint getUniformLocation(const std::string &uniformName) const
Alternative version of getUniformLocation( unsigned int uniformNameID ) retrofited into OSG for backw...
Definition Program:338
const unsigned int _contextID
Definition Program:374
bool needsLink() const
Definition Program:279
bool _ownsProgramHandle
Does the glProgram handle belongs to this class?
Definition Program:377
const UniformBlockMap & getUniformBlocks() const
Definition Program:327
ShaderList _shadersToAttach
Definition Program:389
const ActiveUniformMap & getActiveUniforms() const
Definition Program:325
virtual bool validateProgram()
const osg::Program * getProgram() const
Definition Program:271
GLuint _glProgramHandle
Handle to the actual OpenGL glProgram.
Definition Program:362
void addShaderToAttach(Shader *shader)
Definition Program:342
GLint getUniformLocation(unsigned int uniformNameID) const
Definition Program:328
ActiveUniformMap _uniformInfoMap
Definition Program:379
const Program * _program
Pointer to our parent Program.
Definition Program:357
ShaderList _shadersToDetach
Definition Program:388
bool loadedBinary() const
Was glProgramBinary called successfully?
Definition Program:284
const ActiveVarInfoMap & getActiveAttribs() const
Definition Program:326
GLuint getHandle() const
Definition Program:269
virtual void linkProgram(osg::State &state)
PerContextProgram * getPCP(const std::string &defineStr) const
PerContextPrograms _perContextPrograms
Definition Program:405
std::vector< osg::ref_ptr< PerContextProgram > > PerContextPrograms
Definition Program:399
bool getGlProgramInfoLog(std::string &log) const
void addShaderToAttach(Shader *shader)
unsigned int _contextID
Definition Program:403
ProgramObjects(const Program *program, unsigned int contextID)
void addShaderToDetach(Shader *shader)
const Program * _program
Definition Program:404
PerContextProgram * createPerContextProgram(const std::string &defineStr)
Smart pointer for handling referenced counted objects.
Definition ref_ptr:32
T * get() const
Definition ref_ptr:117
Base class for providing reference counted objects.
Definition Referenced:44
osg::Shader is an application-level abstraction of an OpenGL glShader.
Definition Shader:89
Encapsulates the current applied OpenGL modes, attributes and vertex arrays settings,...
Definition State:80
Base class for state attributes.
Definition StateAttribute:77
@ PROGRAM
Definition StateAttribute:164
Uniform encapsulates glUniform values.
Definition Uniform:414
static unsigned int getNameID(const std::string &name)
Return the number that the name maps to uniquely.
void apply(const GLExtensions *ext, GLint location) const
unsigned int getModifiedCount() const
Definition Uniform:909
#define OSG_EXPORT
Definition Export:39