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 →