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,
GLuint > 
FragDataBindingList
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 setThreadSafeRefUnref (bool threadSafe)
virtual void compileGLObjects (osg::State &state) const
virtual void resizeGLObjectBuffers (unsigned int maxSize)
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)
void addBindFragDataLocation (const std::string &name, GLuint index)
void removeBindFragDataLocation (const std::string &name)
const AttribBindingList & getAttribBindingList () const
const FragDataBindingList & getFragDataBindingList () 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
FragDataBindingList _fragDataBindingList
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,GLuint> osg::Program::AttribBindingList

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

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

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

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

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::apply ( osg::State &  state  )  const [virtual]

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

Reimplemented from osg::StateAttribute.

virtual void osg::Program::setThreadSafeRefUnref ( bool  threadSafe  )  [virtual]

Set whether to use a mutex to ensure ref() and unref() are thread safe.

Reimplemented from osg::Referenced.

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

Compile program and associated shaders.

Reimplemented from osg::StateAttribute.

virtual void osg::Program::resizeGLObjectBuffers ( unsigned int  maxSize  )  [virtual]

Resize any per context GLObject buffers to specified size.

Reimplemented from osg::StateAttribute.

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::dirtyProgram (  ) 

Mark our PCSOs as needing relink

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

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

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

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

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

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::addBindAttribLocation ( const std::string &  name,
GLuint  index 
)

Add an attribute location binding.

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

Remove an attribute location binding.

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

Add an frag data location binding. See EXT_gpu_shader4 for BindFragDataLocationEXT

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

Remove an frag data location binding.

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

const FragDataBindingList& osg::Program::getFragDataBindingList (  )  const [inline]

bool osg::Program::isFixedFunction (  )  const

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

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

Query InfoLog from a glProgram

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.

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::getActiveUniforms ( unsigned int  contextID  )  const

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

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

Get the PCP for a particular GL context


Friends And Related Function Documentation

friend class PerContextProgram [friend]


Member Data Documentation

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

AttribBindingList osg::Program::_attribBindingList [protected]

FragDataBindingList osg::Program::_fragDataBindingList [protected]

ShaderList osg::Program::_shaderList [protected]


The documentation for this class was generated from the following file:
Generated on Fri Jan 25 03:47:13 2008 for openscenegraph by  doxygen 1.5.4