cGenericShader Class Reference

This class defines a generic vertex/fragment shader, which will be subclassed by particular implementations. Shaders in CHAI are objects in the scenegraph, whose children are rendered with this shader enabled. More...

#include <CShaders.h>

Inheritance diagram for cGenericShader:

cGenericObject cGLSLShader List of all members.

Public Member Functions

 cGenericShader ()
 Constructor of cGenericShader.
virtual ~cGenericShader ()
 Destructor of cGenericShader.
virtual int loadVertexShaderFromFile (const char *a_filename)
 Load a vertex shader from a file.
virtual int loadFragmentShaderFromFile (const char *a_filename)
 Load a fragment shader from a file.
virtual int loadVertexShaderFromText (const char *a_shaderText)
 Load a vertex shader from a text string.
virtual int loadFragmentShaderFromText (const char *a_shaderText)
 Load a fragment shader from a text string.
virtual void renderSceneGraph (const int a_renderMode=CHAI_RENDER_MODE_RENDER_ALL)
 Enable the shader before rendering children, then render children, then disable.
virtual void onDisplayReset (const bool a_affectChildren=true)
 This function should get called when it's necessary to re-initialize the OpenGL context.
virtual void setShadingEnabled (const bool a_shadingEnabled)
 Used to enable and disable shading.
virtual bool getShadingEnabled () const
 Is shading currently enabled?

Protected Member Functions

virtual void initializeShaders ()
 Called on display context switches or when new shader text has been loaded.
virtual void uninitializeShaders ()
 Called when we need to clean up shaders; e.g. when new shaders are being loaded.
virtual int initializeFragmentShader ()
 Called to create a fragment shader from m_fragmentShaderString.
virtual int uninitializeFragmentShader ()
 Called to clean up a fragment shader.
virtual int initializeVertexShader ()
 Called to create a vertex shader from m_vertexShaderString.
virtual int uninitializeVertexShader ()
 Called to clean up a vertex shader.
virtual void enableShaders ()=0
 Called at the beginning of a rendering pass to enable shaders.
virtual void disableShaders ()=0

Protected Attributes

char * m_vertexShaderFilename
 A string representing the vertex shader filename; empty if the shader was initialized from text.
char * m_vertexShaderString
 A string representing the vertex shader itself.
char * m_fragmentShaderFilename
 A string representing the vertex shader filename; empty if the shader was initialized from text.
char * m_fragmentShaderString
 A string representing the vertex shader itself.
bool m_fragmentShaderInitialized
 Have we initialized our shaders yet?
bool m_shadingEnabled
 Is shading currently enabled?

Detailed Description

This class defines a generic vertex/fragment shader, which will be subclassed by particular implementations. Shaders in CHAI are objects in the scenegraph, whose children are rendered with this shader enabled.

Specific implementations can be found later in this file.


Constructor & Destructor Documentation

cGenericShader::cGenericShader (  ) 

Constructor of cGenericShader.

Constructor of cGenericShader.

cGenericShader::~cGenericShader (  )  [virtual]

Destructor of cGenericShader.

Destructor of cGenericShader.


Member Function Documentation

int cGenericShader::loadVertexShaderFromFile ( const char *  a_filename  )  [virtual]

Load a vertex shader from a file.

Users should call this method to load a vertex shader from a file.

Parameters:
a_filename The file to load.
Returns:
>=0 for success, <0 for error

int cGenericShader::loadFragmentShaderFromFile ( const char *  a_filename  )  [virtual]

Load a fragment shader from a file.

Users should call this method to load a fragment shader from a file.

Parameters:
a_filename The file to load.
Returns:
>=0 for success, <0 for error

int cGenericShader::loadVertexShaderFromText ( const char *  a_shaderText  )  [virtual]

Load a vertex shader from a text string.

Users should call this method to create a vertex shader from a text string.

Parameters:
a_shaderText The contents of the shader to create and compile.
Returns:
>=0 for success, <0 for error

int cGenericShader::loadFragmentShaderFromText ( const char *  a_shaderText  )  [virtual]

Load a fragment shader from a text string.

Users should call this method to create a fragment shader from a text string.

Parameters:
a_shaderText The contents of the shader to create and compile.
Returns:
>=0 for success, <0 for error

void cGenericShader::renderSceneGraph ( const int  a_renderMode = CHAI_RENDER_MODE_RENDER_ALL  )  [virtual]

Enable the shader before rendering children, then render children, then disable.

Renders the scene graph starting at this object; see cGenericObject.cpp for more details.

This version of the function enables the relevant shader before rendering and disables it afterwards.

Parameters:
a_renderMode The current rendering pass; see cGenericObject.cpp

Reimplemented from cGenericObject.

void cGenericShader::onDisplayReset ( const bool  a_affectChildren = true  )  [virtual]

This function should get called when it's necessary to re-initialize the OpenGL context.

Called when the OpenGL context has been re-initialized; see cGenericObject.cpp for details.

This function is responsible for un-initializing and re-initializing shader data.

Parameters:
a_affectChildren Should this call be recursively applied to my children?

Reimplemented from cGenericObject.

void cGenericShader::initializeShaders (  )  [protected, virtual]

Called on display context switches or when new shader text has been loaded.

Called to initialize shader data; just calls the initialization methods for vertex and fragment shaders.

void cGenericShader::uninitializeShaders (  )  [protected, virtual]

Called when we need to clean up shaders; e.g. when new shaders are being loaded.

Called to clean up shader data; just calls the uninitialization methods for vertex and fragment shaders.

Reimplemented in cGLSLShader.

virtual void cGenericShader::disableShaders (  )  [protected, pure virtual]

Called at the end of a rendering pass to disable shaders, must be over-ridden by subclasses

Implemented in cGLSLShader.


The documentation for this class was generated from the following files:
Generated on Mon Jun 11 09:41:47 2007 for CHAI 3D by  doxygen 1.5.2