Public Member Functions

mitk::GPGPU::Shader Class Reference

#include <mitkGPGPU.h>

List of all members.

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)

Detailed Description

Definition at line 92 of file mitkGPGPU.h.


Constructor & Destructor Documentation

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 );
}

Member Function Documentation

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";
}

The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines