GLC_Shader : OpenGL shader abstraction. More...
#include <glc_shader.h>
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_Shader & | operator= (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. | |
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.
| 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 | ( | ) |
| 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 | ( | ) |
Delete the shader.
Definition at line 215 of file glc_shader.cpp.
References glDeleteProgram, glDeleteShader, glDetachShader, m_CurrentProgramm, m_FragmentShader, m_ProgrammStack, m_ProgramShader, and m_VertexShader.
Referenced by GLC_SelectionMaterial::deleteShader(), and ~GLC_Shader().
| 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 | ) |
Replace this shader by a copy of another shader.
Definition at line 283 of file glc_shader.cpp.
References createAndCompileProgrammShader(), glDeleteProgram, glDeleteShader, glDetachShader, glUseProgram, isUsable(), m_CurrentProgramm, m_FragmentByteArray, m_FragmentShader, m_ProgrammStack, m_ProgramShader, m_VertexByteArray, and m_VertexShader.
| 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().
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] |
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] |
Programm shader ID.
Definition at line 193 of file glc_shader.h.
Referenced by canBeDeleted(), createAndCompileProgrammShader(), deleteShader(), GLC_Shader(), replaceShader(), setFragmentShader(), setVertexShader(), and use().
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().