osg::Program Class Reference

Inheritance diagram for osg::Program:

osg::StateAttribute osg::Object osg::Referenced List of all members.

Public Types

typedef std::map< std::string,
GLuint > 
AttribBindingList
typedef std::map< std::string,
ActiveVarInfo > 
ActiveVarInfoMap

Public Member Functions

 Program ()
 Program (const Program &rhs, const osg::CopyOp &copyop=osg::CopyOp::SHALLOW_COPY)
 META_StateAttribute (osg, Program, PROGRAM)
virtual int compare (const osg::StateAttribute &sa) const
virtual void apply (osg::State &state) const
virtual void compileGLObjects (osg::State &state) const
virtual void releaseGLObjects (osg::State *state=0) const
void dirtyProgram ()
bool addShader (Shader *shader)
unsigned int getNumShaders () const
Shader * getShader (unsigned int i)
const Shader * getShader (unsigned int i) const
bool removeShader (Shader *shader)
void addBindAttribLocation (const std::string &name, GLuint index)
void removeBindAttribLocation (const std::string &name)
const AttribBindingList & getAttribBindingList () const
bool isFixedFunction () const
bool getGlProgramInfoLog (unsigned int contextID, std::string &log) const
const ActiveVarInfoMap & getActiveUniforms (unsigned int contextID) const
const ActiveVarInfoMap & getActiveAttribs (unsigned int contextID) const
PerContextProgram * getPCP (unsigned int contextID) const

Static Public Member Functions

static void deleteGlProgram (unsigned int contextID, GLuint program)
static void flushDeletedGlPrograms (unsigned int contextID, double currentTime, double &availableTime)

Protected Types

typedef std::vector< ref_ptr<
Shader > > 
ShaderList

Protected Member Functions

virtual ~Program ()

Protected Attributes

osg::buffered_value< osg::ref_ptr<
PerContextProgram > > 
_pcpList
AttribBindingList _attribBindingList
ShaderList _shaderList

Friends

class PerContextProgram

Classes

struct  ActiveVarInfo
class  PerContextProgram

Detailed Description

osg::Program is an application-level abstraction of an OpenGL glProgram. It is an osg::StateAttribute that, when applied, will activate a glProgram for subsequent rendering. osg::Shaders containing the actual shader source code are attached to a Program, which will then manage the compilation, linking, and activation of the GLSL program. osg::Program will automatically manage per-context instancing of the OpenGL glPrograms, if that is necessary for a particular display configuration.


Member Typedef Documentation

typedef std::map< std::string, ActiveVarInfo > osg::Program::ActiveVarInfoMap

typedef std::map<std::string,GLuint> osg::Program::AttribBindingList

typedef std::vector< ref_ptr<Shader> > osg::Program::ShaderList [protected]


Constructor & Destructor Documentation

osg::Program::Program (  ) 

osg::Program::Program ( const Program &  rhs,
const osg::CopyOp &  copyop = osg::CopyOp::SHALLOW_COPY 
)

Copy constructor using CopyOp to manage deep vs shallow copy.

virtual osg::Program::~Program (  )  [protected, virtual]


Member Function Documentation

void osg::Program::addBindAttribLocation ( const std::string &  name,
GLuint  index 
)

Add an attribute location binding.

bool osg::Program::addShader ( Shader *  shader  ) 

Attach an osg::Shader to this osg::Program. Mark Program as needing relink. Return true for success

virtual void osg::Program::apply ( osg::State &  state  )  const [virtual]

If enabled, activate our program in the GL pipeline, performing any rebuild operations that might be pending.

Implements osg::StateAttribute.

virtual int osg::Program::compare ( const osg::StateAttribute &  sa  )  const [virtual]

return -1 if *this < *rhs, 0 if *this==*rhs, 1 if *this>*rhs.

Implements osg::StateAttribute.

virtual void osg::Program::compileGLObjects ( osg::State &  state  )  const [virtual]

default to nothing to compile - all state is applied immediately.

Reimplemented from osg::StateAttribute.

static void osg::Program::deleteGlProgram ( unsigned int  contextID,
GLuint  program 
) [static]

Mark internal glProgram for deletion. Deletion requests are queued until they can be executed in the proper GL context.

void osg::Program::dirtyProgram (  ) 

Mark our PCSOs as needing relink

static void osg::Program::flushDeletedGlPrograms ( unsigned int  contextID,
double  currentTime,
double &  availableTime 
) [static]

flush all the cached glPrograms which need to be deleted in the OpenGL context related to contextID.

const ActiveVarInfoMap& osg::Program::getActiveAttribs ( unsigned int  contextID  )  const

const ActiveVarInfoMap& osg::Program::getActiveUniforms ( unsigned int  contextID  )  const

const AttribBindingList& osg::Program::getAttribBindingList (  )  const [inline]

bool osg::Program::getGlProgramInfoLog ( unsigned int  contextID,
std::string &  log 
) const

Query InfoLog from a glProgram

unsigned int osg::Program::getNumShaders (  )  const [inline]

PerContextProgram* osg::Program::getPCP ( unsigned int  contextID  )  const

Get the PCP for a particular GL context

const Shader* osg::Program::getShader ( unsigned int  i  )  const [inline]

Shader* osg::Program::getShader ( unsigned int  i  )  [inline]

bool osg::Program::isFixedFunction (  )  const

Return true if this Program represents "fixed-functionality" rendering

osg::Program::META_StateAttribute ( osg  ,
Program  ,
PROGRAM   
)

virtual void osg::Program::releaseGLObjects ( osg::State *  state = 0  )  const [virtual]

release OpenGL objects in specified graphics context if State object is passed, otherwise release OpenGL objects for all graphics context if State object pointer NULL.

Reimplemented from osg::StateAttribute.

void osg::Program::removeBindAttribLocation ( const std::string &  name  ) 

Add an attribute location binding.

bool osg::Program::removeShader ( Shader *  shader  ) 

Remove osg::Shader from this osg::Program. Mark Program as needing relink. Return true for success


Friends And Related Function Documentation

friend class PerContextProgram [friend]


Member Data Documentation

AttribBindingList osg::Program::_attribBindingList [protected]

osg::buffered_value< osg::ref_ptr<PerContextProgram> > osg::Program::_pcpList [mutable, protected]

ShaderList osg::Program::_shaderList [protected]


The documentation for this class was generated from the following file:
Generated on Sun Oct 1 13:17:07 2006 for openscenegraph by  doxygen 1.4.7