Computergrafik

Interpolierte Parameter

Per-Vertex Attribute | | Einfache Standard-Codesequenz

Parameter, die im Vertex-Shader spezifiziert werden und über alle Fragmente des Primitivs interpoliert werden, nennt man Varying.

  • Man definiert im Vertex-Shader eine (globale) Variable, die einen Wert zugewiesen bekommen soll:
    varying vec4 myInterpolationName;
  • Im Fragment-Shader definiert man genau die gleiche Variable; hier kann auf die Variable nur lesend zugegriffen werden.

Die Variable enthält dann den interpolierten Wert.

Beispiel:

  • Vertex-Shader:
    #version 120
    attribute vec4 vertex_position;
    attribute vec4 vertex_color;
    varying   vec4 col;
    void main () {
      gl_Position = vertex_position;
      col         = vertex_color;
    }
  • Pixel-Shader:
    #version 120
    varying vec4 col;
    void main () {
      gl_FragColor = col;
    }
  • Zeichnen:
    lglBegin  (LGL_TRIANGLES);
    lglColor  (1, 0, 0, 1);
    lglVertex (+0,    +0.6,  0.0, 1.0);
    lglColor  (0, 1, 0, 1);
    lglVertex (+0.75, -0.6,  0.0, 1.0);
    lglColor  (0, 0, 1, 1);
    lglVertex (-0.75, -0.6,  0.0, 1.0);
    lglEnd    ();


Per-Vertex Attribute | | Einfache Standard-Codesequenz

Options: