GLC_Shader Class Reference

GLC_Shader : OpenGL shader abstraction. More...

#include <glc_shader.h>

List of all members.

Public Member Functions

Constructor / Destructor

 GLC_Shader ()
 Default constructor.
 GLC_Shader (QFile &, QFile &)
 Construct shader with specifie vertex and fragment.
 GLC_Shader (const GLC_Shader &)
 Copy constructor.
 ~GLC_Shader ()
 Shader destructor.
Get Functions

GLuint id () const
 Return the program shader id.
bool isUsable () const
 Return true if the shader is usable.
bool canBeDeleted () const
 Return true if the shader can be deleted.
QString name () const
 Return the shader's name.
Set Functions

void setVertexAndFragmentShader (QFile &, QFile &)
 Set Vertex and fragment shaders.
void replaceShader (const GLC_Shader &)
 Replace this shader by a copy of another shader.
GLC_Shaderoperator= (const GLC_Shader &shader)
 Assignement operator which use replace shader method.
void setName (const QString &name)
 Set the Shader Name.

Private Member Functions

private services Functions

void loadVertexShader ()
 Load Vertex shader.
void loadFragmentShader ()
 Load fragment shaders.
void setVertexShader (QFile &)
 Set Vertex shader.
void setFragmentShader (QFile &)
 Set fragment shaders.
QByteArray readShaderFile (QFile &)
 Return char* of an Ascii file.

Private Attributes

QByteArray m_VertexByteArray
 Vertex shader file.
GLuint m_VertexShader
 Vertex shader ID.
QByteArray m_FragmentByteArray
 Fragment shader file.
GLuint m_FragmentShader
 Fragment shader ID.
GLuint m_ProgramShader
 Programm shader ID.
QString m_Name
 The Shader's name.

Static Private Attributes

static QStack< GLuint > m_ProgrammStack
 The programm ID Stack.
static GLuint m_CurrentProgramm = 0
 The current programm ID.
static QMutex m_Mutex
 A Mutex.

OpenGL Functions



void use ()
 Use this shader program.
void createAndCompileProgrammShader ()
 Compile and attach shaders to a program shader.
void deleteShader ()
 Delete the shader.
static void use (GLuint)
 use specified program shader
static void unuse ()
 unuse programm shader
void createAndLinkVertexShader ()
 Create and compile vertex shader.
void createAndLinkFragmentShader ()
 Create and compile fragment shader.

Detailed Description

GLC_Shader : OpenGL shader abstraction.

An GLC_Shader encapsulate vertex, fragment shader and programm
GLC_Shader provide functionnality to load, compile and execute GLSL vertex and fragment shader.

Definition at line 48 of file glc_shader.h.


Constructor & Destructor Documentation

GLC_Shader::GLC_Shader (  ) 

Default constructor.

Definition at line 41 of file glc_shader.cpp.

GLC_Shader::GLC_Shader ( QFile &  vertex,
QFile &  fragment 
)

Construct shader with specifie vertex and fragment.

Definition at line 53 of file glc_shader.cpp.

References setVertexAndFragmentShader().

GLC_Shader::GLC_Shader ( const GLC_Shader shader  ) 

Copy constructor.

Definition at line 66 of file glc_shader.cpp.

References createAndCompileProgrammShader(), and m_ProgramShader.

GLC_Shader::~GLC_Shader (  ) 

Shader destructor.

Definition at line 81 of file glc_shader.cpp.

References deleteShader().


Member Function Documentation

bool GLC_Shader::canBeDeleted (  )  const

Return true if the shader can be deleted.

Definition at line 92 of file glc_shader.cpp.

References m_CurrentProgramm, and m_ProgramShader.

void GLC_Shader::createAndCompileProgrammShader (  ) 

Compile and attach shaders to a program shader.

Throw GLC_Exception if vertex and fragment shader are not been set

Definition at line 171 of file glc_shader.cpp.

References createAndLinkFragmentShader(), createAndLinkVertexShader(), glAttachShader, glCreateProgram, glGetProgramiv, glLinkProgram, m_FragmentShader, m_ProgramShader, and m_VertexShader.

Referenced by GLC_Shader(), and replaceShader().

void GLC_Shader::createAndLinkFragmentShader (  )  [private]

Create and compile fragment shader.

Definition at line 251 of file glc_shader.cpp.

References glCompileShader, glCreateShader, glGetShaderiv, glShaderSource, m_FragmentByteArray, and m_FragmentShader.

Referenced by createAndCompileProgrammShader().

void GLC_Shader::createAndLinkVertexShader (  )  [private]

Create and compile vertex shader.

Definition at line 196 of file glc_shader.cpp.

References glCompileShader, glCreateShader, glGetShaderiv, glShaderSource, m_VertexByteArray, and m_VertexShader.

Referenced by createAndCompileProgrammShader().

void GLC_Shader::deleteShader (  ) 
GLuint GLC_Shader::id (  )  const [inline]

Return the program shader id.

Definition at line 74 of file glc_shader.h.

bool GLC_Shader::isUsable (  )  const [inline]

Return true if the shader is usable.

Definition at line 78 of file glc_shader.h.

Referenced by replaceShader().

void GLC_Shader::loadFragmentShader (  )  [private]

Load fragment shaders.

void GLC_Shader::loadVertexShader (  )  [private]

Load Vertex shader.

QString GLC_Shader::name (  )  const [inline]

Return the shader's name.

Definition at line 85 of file glc_shader.h.

GLC_Shader& GLC_Shader::operator= ( const GLC_Shader shader  )  [inline]

Assignement operator which use replace shader method.

Definition at line 102 of file glc_shader.h.

QByteArray GLC_Shader::readShaderFile ( QFile &  shaderFile  )  [private]

Return char* of an Ascii file.

Definition at line 354 of file glc_shader.cpp.

Referenced by setFragmentShader(), and setVertexShader().

void GLC_Shader::replaceShader ( const GLC_Shader sourceShader  ) 
void GLC_Shader::setFragmentShader ( QFile &  fragmentFile  )  [private]

Set fragment shaders.

Definition at line 347 of file glc_shader.cpp.

References m_FragmentByteArray, m_ProgramShader, and readShaderFile().

Referenced by setVertexAndFragmentShader().

void GLC_Shader::setName ( const QString &  name  )  [inline]

Set the Shader Name.

Definition at line 109 of file glc_shader.h.

void GLC_Shader::setVertexAndFragmentShader ( QFile &  vertexFile,
QFile &  fragmentFile 
)

Set Vertex and fragment shaders.

Definition at line 275 of file glc_shader.cpp.

References m_Name, setFragmentShader(), and setVertexShader().

Referenced by GLC_Shader().

void GLC_Shader::setVertexShader ( QFile &  vertexFile  )  [private]

Set Vertex shader.

Definition at line 340 of file glc_shader.cpp.

References m_ProgramShader, m_VertexByteArray, and readShaderFile().

Referenced by setVertexAndFragmentShader().

void GLC_Shader::unuse (  )  [static]

unuse programm shader

Definition at line 155 of file glc_shader.cpp.

References glUseProgram, GLC_State::isInSelectionMode(), m_CurrentProgramm, m_Mutex, and m_ProgrammStack.

Referenced by GLC_3DViewCollection::glDraw().

void GLC_Shader::use ( GLuint  shaderId  )  [static]

use specified program shader

Throw GLC_Exception if the program is not usable

Definition at line 130 of file glc_shader.cpp.

References glIsProgram, glUseProgram, GLC_State::isInSelectionMode(), m_CurrentProgramm, and m_ProgrammStack.

void GLC_Shader::use (  ) 

Use this shader program.

Throw GLC_Exception if the program is not usable

Definition at line 102 of file glc_shader.cpp.

References glIsProgram, glUseProgram, GLC_State::isInSelectionMode(), m_CurrentProgramm, m_Mutex, m_ProgrammStack, and m_ProgramShader.

Referenced by GLC_3DViewCollection::glDraw().


Member Data Documentation

GLuint GLC_Shader::m_CurrentProgramm = 0 [static, private]

The current programm ID.

Definition at line 175 of file glc_shader.h.

Referenced by canBeDeleted(), deleteShader(), replaceShader(), unuse(), and use().

QByteArray GLC_Shader::m_FragmentByteArray [private]

Fragment shader file.

Definition at line 187 of file glc_shader.h.

Referenced by createAndLinkFragmentShader(), replaceShader(), and setFragmentShader().

GLuint GLC_Shader::m_FragmentShader [private]

Fragment shader ID.

Definition at line 190 of file glc_shader.h.

Referenced by createAndCompileProgrammShader(), createAndLinkFragmentShader(), deleteShader(), and replaceShader().

QMutex GLC_Shader::m_Mutex [static, private]

A Mutex.

Definition at line 178 of file glc_shader.h.

Referenced by unuse(), and use().

QString GLC_Shader::m_Name [private]

The Shader's name.

Definition at line 196 of file glc_shader.h.

Referenced by setVertexAndFragmentShader().

QStack< GLuint > GLC_Shader::m_ProgrammStack [static, private]

The programm ID Stack.

Definition at line 172 of file glc_shader.h.

Referenced by deleteShader(), replaceShader(), unuse(), and use().

GLuint GLC_Shader::m_ProgramShader [private]
QByteArray GLC_Shader::m_VertexByteArray [private]

Vertex shader file.

Definition at line 181 of file glc_shader.h.

Referenced by createAndLinkVertexShader(), replaceShader(), and setVertexShader().

GLuint GLC_Shader::m_VertexShader [private]

Vertex shader ID.

Definition at line 184 of file glc_shader.h.

Referenced by createAndCompileProgrammShader(), createAndLinkVertexShader(), deleteShader(), and replaceShader().


The documentation for this class was generated from the following files:

SourceForge.net Logo

©2005 Laurent Ribon