osg::Shader Class Reference

Inheritance diagram for osg::Shader:

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

Public Types

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 Wed Nov 29 06:12:01 2006 for OpenSceneGraph by  doxygen 1.4.6