osg::Shader Class Reference

Inheritance diagram for osg::Shader:

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

Public Types

 VERTEX = GL_VERTEX_SHADER
 FRAGMENT = GL_FRAGMENT_SHADER
 UNDEFINED = -1
enum  Type { VERTEX = GL_VERTEX_SHADER, FRAGMENT = GL_FRAGMENT_SHADER, UNDEFINED = -1 }

Public Member Functions

 Shader (Type type=UNDEFINED)
 Shader (Type type, const std::string &source)
 Shader (const Shader &rhs, const osg::CopyOp &copyop=osg::CopyOp::SHALLOW_COPY)
 META_Object (osg, Shader)
int compare (const Shader &rhs) const
bool setType (Type t)
void setShaderSource (const std::string &sourceText)
bool loadShaderSourceFromFile (const std::string &fileName)
const std::string & getShaderSource () const
Type getType () const
const char * getTypename () const
void releaseGLObjects (osg::State *state=0) const
void dirtyShader ()
void compileShader (unsigned int contextID) const
void attachShader (unsigned int contextID, GLuint program) const
bool getGlShaderInfoLog (unsigned int contextID, std::string &log) const

Static Public Member Functions

static ShaderreadShaderFile (Type type, const std::string &fileName)
static void deleteGlShader (unsigned int contextID, GLuint shader)
static void flushDeletedGlShaders (unsigned int contextID, double currentTime, double &availableTime)
static Shader::Type getTypeId (const std::string &tname)

Protected Types

typedef std::set< osg::Program * > ProgramSet

Protected Member Functions

virtual ~Shader ()
PerContextShadergetPCS (unsigned int contextID) const
bool addProgramRef (osg::Program *program)
bool removeProgramRef (osg::Program *program)

Protected Attributes

Type _type
std::string _shaderSource
ProgramSet _programSet
osg::buffered_value< osg::ref_ptr<
PerContextShader > > 
_pcsList

Friends

class osg::Program

Classes

class  PerContextShader

Member Typedef Documentation

typedef std::set< osg::Program* > osg::Shader::ProgramSet [protected]

osg::Programs that this osg::Shader is attached to


Member Enumeration Documentation

enum osg::Shader::Type

Enumerator:
VERTEX 
FRAGMENT 
UNDEFINED 


Constructor & Destructor Documentation

osg::Shader::Shader ( Type  type = UNDEFINED  ) 

osg::Shader::Shader ( Type  type,
const std::string &  source 
)

osg::Shader::Shader ( const Shader rhs,
const osg::CopyOp copyop = osg::CopyOp::SHALLOW_COPY 
)

Copy constructor using CopyOp to manage deep vs shallow copy.

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


Member Function Documentation

bool osg::Shader::addProgramRef ( osg::Program program  )  [protected]

void osg::Shader::attachShader ( unsigned int  contextID,
GLuint  program 
) const

For a given GL context, attach a glShader to a glProgram

int osg::Shader::compare ( const Shader rhs  )  const

void osg::Shader::compileShader ( unsigned int  contextID  )  const

If needed, compile the PCS's glShader

static void osg::Shader::deleteGlShader ( unsigned int  contextID,
GLuint  shader 
) [static]

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

void osg::Shader::dirtyShader (  ) 

Mark our PCSs as needing recompilation. Also mark Programs that depend on us as needing relink

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

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

bool osg::Shader::getGlShaderInfoLog ( unsigned int  contextID,
std::string &  log 
) const

Query InfoLog from a glShader

PerContextShader* osg::Shader::getPCS ( unsigned int  contextID  )  const [protected]

const std::string& osg::Shader::getShaderSource (  )  const [inline]

Query the shader's source code text

Type osg::Shader::getType (  )  const [inline]

Get the Shader type as an enum.

static Shader::Type osg::Shader::getTypeId ( const std::string &  tname  )  [static]

const char* osg::Shader::getTypename (  )  const

Get the Shader type as a descriptive string.

bool osg::Shader::loadShaderSourceFromFile ( const std::string &  fileName  ) 

Load the Shader's source code text from a file.

osg::Shader::META_Object ( osg  ,
Shader   
)

static Shader* osg::Shader::readShaderFile ( Type  type,
const std::string &  fileName 
) [static]

Read shader source from file and then constructor shader of specified type. Return the resulting Shader or 0 if no valid shader source code be read.

void osg::Shader::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::Object.

bool osg::Shader::removeProgramRef ( osg::Program program  )  [protected]

void osg::Shader::setShaderSource ( const std::string &  sourceText  ) 

Load the Shader's source code text from a string.

bool osg::Shader::setType ( Type  t  ) 


Friends And Related Function Documentation

friend class osg::Program [friend]


Member Data Documentation

osg::buffered_value< osg::ref_ptr<PerContextShader> > osg::Shader::_pcsList [mutable, protected]

ProgramSet osg::Shader::_programSet [protected]

std::string osg::Shader::_shaderSource [protected]

Type osg::Shader::_type [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