- Main Page
- Classes
- Files
- Directories

- Class List
- Class Hierarchy
- Class Members

# 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:

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:

- chai3d/src/graphics/CShaders.h
- chai3d/src/graphics/CShaders.cpp