#include <mitkGPGPU.h>
Public Member Functions | |
Shader (char *source) | |
~Shader () | |
void | Activate () |
void | SetUniform (char *name, int i0) |
void | SetUniform (char *name, int i0, int i1) |
void | SetUniform (char *name, int i0, int i1, int i2) |
void | SetUniform (char *name, int i0, int i1, int i2, int i3) |
void | SetUniform (char *name, float i0) |
void | SetUniform (char *name, float i0, float i1) |
void | SetUniform (char *name, float i0, float i1, float i2) |
void | SetUniform (char *name, float i0, float i1, float i2, float i3) |
Definition at line 92 of file mitkGPGPU.h.
mitk::GPGPU::Shader::Shader | ( | char * | source ) |
Definition at line 235 of file mitkGPGPU.cpp.
References GL_COMPILE_STATUS, GL_FRAGMENT_SHADER, GL_INFO_LOG_LENGTH, GL_LINK_STATUS, GL_VERTEX_SHADER, glAttachShader, glCompileShader, glCreateProgram, glCreateShader, glGetProgramInfoLog, glGetProgramiv, glGetShaderiv, glLinkProgram, glShaderSource, GPGPU_CHECKGLERR, GPGPU_ERROR, and stubVertexShader.
{ //std::cout << "compiling shader:\n" << source << std::endl; glHandleVertex = glCreateShader(GL_VERTEX_SHADER); glHandleFragment = glCreateShader(GL_FRAGMENT_SHADER); glHandleProgram = glCreateProgram(); GLchar *src[2]; src[0] = stubVertexShader; src[1] = 0; glShaderSource(glHandleVertex,1,(const GLchar **)src,0); src[0] = source; src[1] = 0; glShaderSource(glHandleFragment,1,(const GLchar **)src,0); bool failed=false; GLint _sv,_sf,_sl; glCompileShader( glHandleVertex ); GPGPU_CHECKGLERR << "compiling vertex shader"; glGetShaderiv( glHandleVertex, GL_COMPILE_STATUS, &_sv); if( !_sv) { GPGPU_ERROR << "vertex shader compilation failed\n"; failed=true; } glCompileShader( glHandleFragment ); GPGPU_CHECKGLERR << "compiling fragment shader"; glGetShaderiv( glHandleFragment, GL_COMPILE_STATUS, &_sf); if( !_sf) { GPGPU_ERROR << "fragment shader compilation failed\n"; failed=true; } glAttachShader( glHandleProgram,glHandleVertex ); glAttachShader( glHandleProgram,glHandleFragment ); glLinkProgram( glHandleProgram ); GPGPU_CHECKGLERR << "linking shader program"; glGetProgramiv( glHandleProgram, GL_LINK_STATUS, &_sl); if( !_sl) { GPGPU_ERROR << "shader linkage failed\n"; failed=true; } if(failed) { int infologLength = 0; int charsWritten = 0; char *infoLog; glGetProgramiv(glHandleProgram, GL_INFO_LOG_LENGTH,&infologLength); if (infologLength > 0) { infoLog = (char *)malloc(infologLength); glGetProgramInfoLog(glHandleProgram, infologLength, &charsWritten, infoLog); GPGPU_ERROR << "SHADER CREATION FAILED INFOLOG:\n" << infoLog; free(infoLog); } } }
mitk::GPGPU::Shader::~Shader | ( | ) |
Definition at line 307 of file mitkGPGPU.cpp.
References glDeleteProgram, and glDeleteShader.
{ glDeleteProgram( glHandleProgram); glDeleteShader( glHandleVertex ); glDeleteShader( glHandleFragment ); }
void mitk::GPGPU::Shader::Activate | ( | ) |
Definition at line 314 of file mitkGPGPU.cpp.
References glUseProgram, and GPGPU_CHECKGLERR.
{ glUseProgram( glHandleProgram ); GPGPU_CHECKGLERR << "activating shader"; }
void mitk::GPGPU::Shader::SetUniform | ( | char * | name, |
float | i0, | ||
float | i1, | ||
float | i2, | ||
float | i3 | ||
) |
Definition at line 389 of file mitkGPGPU.cpp.
References glUniform4fv, and GPGPU_CHECKGLERR.
{ GLfloat i[4]; i[0]=i0; i[1]=i1; i[2]=i2; i[3]=i3; glUniform4fv(GetUniformLocation(name),1,i); GPGPU_CHECKGLERR << "setting uniform"; }
void mitk::GPGPU::Shader::SetUniform | ( | char * | name, |
float | i0, | ||
float | i1, | ||
float | i2 | ||
) |
Definition at line 379 of file mitkGPGPU.cpp.
References glUniform3fv, and GPGPU_CHECKGLERR.
{ GLfloat i[3]; i[0]=i0; i[1]=i1; i[2]=i2; glUniform3fv(GetUniformLocation(name),1,i); GPGPU_CHECKGLERR << "setting uniform"; }
void mitk::GPGPU::Shader::SetUniform | ( | char * | name, |
float | i0, | ||
float | i1 | ||
) |
Definition at line 370 of file mitkGPGPU.cpp.
References glUniform2fv, and GPGPU_CHECKGLERR.
{ GLfloat i[2]; i[0]=i0; i[1]=i1; glUniform2fv(GetUniformLocation(name),1,i); GPGPU_CHECKGLERR << "setting uniform"; }
void mitk::GPGPU::Shader::SetUniform | ( | char * | name, |
float | i0 | ||
) |
Definition at line 363 of file mitkGPGPU.cpp.
References glUniform1f, and GPGPU_CHECKGLERR.
{ GLint location = GetUniformLocation(name); glUniform1f(location,i0); GPGPU_CHECKGLERR << "setting uniform"; }
void mitk::GPGPU::Shader::SetUniform | ( | char * | name, |
int | i0, | ||
int | i1, | ||
int | i2, | ||
int | i3 | ||
) |
Definition at line 352 of file mitkGPGPU.cpp.
References glUniform4iv, and GPGPU_CHECKGLERR.
{ GLint i[4]; i[0]=i0; i[1]=i1; i[2]=i2; i[3]=i3; glUniform4iv( GetUniformLocation(name) , 1 , i ); GPGPU_CHECKGLERR << "setting uniform"; }
void mitk::GPGPU::Shader::SetUniform | ( | char * | name, |
int | i0, | ||
int | i1, | ||
int | i2 | ||
) |
Definition at line 342 of file mitkGPGPU.cpp.
References glUniform3iv, and GPGPU_CHECKGLERR.
{ GLint i[3]; i[0]=i0; i[1]=i1; i[2]=i2; glUniform3iv( GetUniformLocation(name) , 1 , i ); GPGPU_CHECKGLERR << "setting uniform"; }
void mitk::GPGPU::Shader::SetUniform | ( | char * | name, |
int | i0, | ||
int | i1 | ||
) |
Definition at line 333 of file mitkGPGPU.cpp.
References glUniform2iv, and GPGPU_CHECKGLERR.
{ GLint i[2]; i[0]=i0; i[1]=i1; glUniform2iv( GetUniformLocation(name) , 1 , i ); GPGPU_CHECKGLERR << "setting uniform"; }
void mitk::GPGPU::Shader::SetUniform | ( | char * | name, |
int | i0 | ||
) |
Definition at line 326 of file mitkGPGPU.cpp.
References glUniform1i, and GPGPU_CHECKGLERR.
{ glUniform1i( GetUniformLocation(name) , i0); GPGPU_CHECKGLERR << "setting uniform"; }