MedicalVisualization

OpenGL GLSL Shader Example

OpenGL GLSL Shader Documentation | | TFs With GLSL Dependent Texturing

To compile a GLSL shader we use the glVertex frame work.

In this frame work the two vertex and fragment shaders are concatenated with the “---“ separating token. So the compiliation of the previous example GLSL shader is achieved as follows:

#include <glvertex.h>

const char shader[] =
 "#version 120\n"
 "attribute vec4 vertex_position;\n"
 "attribute vec4 vertex_color;\n"
 "uniform mat4 mvp;\n"
 "varying vec4 frag_color;\n"
 "void main()\n"
 "{\n"
 "   frag_color = vertex_color;\n"
 "   gl_Position = mvp * vertex_position;\n"
 "}\n"
 "---\n"
 "#version 120\n"
 "varying vec4 frag_color;\n"
 "void main()\n"
 "{\n"
 "   gl_FragColor = frag_color;\n"
 "}\n";

GLuint id = lglCompileGLSLProgram(shader);
lglUseProgram(id);

Note: due to changes of the OpenGL 3.2 standard over OpenGL 2.1, the input registers gl_Vertex, gl_Color etc. are replaced by attribute vectors within the glVertex frame work. The following uniforms and attributes are available:

  • uniform vec4 color: constant color
  • uniform mat4 mv: model-view matrix
  • uniform mat4 mvit: inverse transpose model-view matrix
  • uniform mat4 mvp: combined model-view-projection matrix
  • attribute vec4 vertex_position: incoming vertices
  • attribute vec4 vertex_color: incoming vertex color attribute
  • attribute vec3 vertex_normal: incoming vertex normal attribute
  • attribute vec4 vertex_texcoord: incoming vertex texture coordinate attribute

To try the above GLSL example, open the GLSL shader editor of the frame work:

./myqtapp --glsleditor


OpenGL GLSL Shader Documentation | | TFs With GLSL Dependent Texturing

Options: