Computergrafik

GLSL Anwendungsbeispiel

GLSL unter OpenGL | | Modellierung Standard-Codesequenz

Hier ein Codebeispiel, wie (triviale) GLSL Shader in OpenGL benutzt werden. Es wird die ModelViewProjection-Matrix mit dem Vertex verknüpft, und alles rot gezeichnet.

Es enthält keinerlei Fehlerabfrage etc., was für Shader-Programmierung essentiell ist. Wenn der Shader einen Compilerfehler enthält, wird der Shader einfach nicht benutzt…

void init ()
{
    // 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
    // lgl nur, da später lglRender() genutzt wird, was den Shader neu setzt
    lglUseProgram   (prg);
}


GLSL unter OpenGL | | Modellierung Standard-Codesequenz

Options: