Computergrafik

GLSL Anwendungsbeispiel

GLSL unter OpenGL | | Modellierung Standard-Codesequenz

Hier ein Codebeispiel, wie (triviale) GLSL Shader in OpenGL verwendet werden. Es wird die ModelViewProjection-Matrix mit dem Vertex multipliziert und die gesamte Geometrie rot gezeichnet.

// Shader source
static const char *vs_src =
    "#version 120\n"
    "uniform mat4 mvp;\n"
    "void main()\n"
    "{\n"
    "    gl_Position = mvp * gl_Vertex;\n"
    "}\n";
static const char *fs_src =
    "#version 120\n"
    "void main()\n"
    "{\n"
    "    gl_FragColor = vec4 (1, 0, 0, 1);\n"
    "}\n";

// Erzeuge und compiliere Vertex Shader
GLuint vs =     glCreateShader (GL_VERTEX_SHADER);
glShaderSource  (vs, 1, &vs_src, NULL);
glCompileShader (vs);

// Erzeuge und compiliere Fragment Shader
GLuint fs =     glCreateShader (GL_FRAGMENT_SHADER);
glShaderSource  (fs, 1, &fs_src, NULL);
glCompileShader (fs);

// Erzeuge und linke Programm
GLuint prg =    glCreateProgram();
glAttachShader  (prg, vs);
glAttachShader  (prg, fs);
glLinkProgram   (prg);
// Aktiviere Programm
glActiveProgram (prg);
}

Hinweis: Wenn der Shader einen Compilerfehler enthalten sollte, so wird der Shader einfach nicht aktiviert.

GLSL unter OpenGL | | Modellierung Standard-Codesequenz

Options: