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,
std::pair< GLint, GLenum > > 
NameInfoMap

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
void setName (const std::string &name)
void setName (const char *name)
const std::string & getName () const
const NameInfoMap & getActiveUniforms (unsigned int contextID) const
const NameInfoMap & 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

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

Friends

class PerContextProgram

Classes

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,GLuint> osg::Program::AttribBindingList
 

typedef std::map< std::string, std::pair<GLint,GLenum> > osg::Program::NameInfoMap
 

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 NameInfoMap& osg::Program::getActiveAttribs (  unsigned int  contextID  )  const
 

const NameInfoMap& 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

const std::string& osg::Program::getName (   )  const [inline]
 

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

void osg::Program::setName (  const char *  name  )  [inline]
 

void osg::Program::setName (  const std::string &  name  )  [inline]
 

A name for use by the application


Friends And Related Function Documentation

friend class PerContextProgram [friend]
 


Member Data Documentation

AttribBindingList osg::Program::_attribBindingList [protected]
 

std::string osg::Program::_name [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 Mon Feb 6 16:33:31 2006 for openscenegraph by  doxygen 1.4.6