Lazarus - OpenGL 3.3 Tutorial - Vertex-Puffer - VertexID: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
(Die Seite wurde neu angelegt: „200px<br><br> =Vertex-Puffer - VertexID = == Einleitung == Mit '''gl_VertexID''' kann ma…“)
 
Zeile 5: Zeile 5:
 
Das Rendering ist nicht besonderes, es spielt sich alles im Vertex-Shader ab.<br>
 
Das Rendering ist nicht besonderes, es spielt sich alles im Vertex-Shader ab.<br>
 
<br><br>
 
<br><br>
<syntaxhighlight lang="pascal"></syntaxhighlight>
 
 
<br><br>
 
<br><br>
 
Da es in diesem Beispiel nur maximal 6 Vertex-Punkte gibt, habe ich die VertexID mit einer einfachen Case-Schleife ausgewertet.<br>
 
Da es in diesem Beispiel nur maximal 6 Vertex-Punkte gibt, habe ich die VertexID mit einer einfachen Case-Schleife ausgewertet.<br>

Version vom 1. August 2018, 17:52 Uhr

Lazarus - OpenGL 3.3 Tutorial - Vertex-Puffer - VertexID.png

Vertex-Puffer - VertexID

Einleitung

Mit gl_VertexID kann man im Vertex-Shader ermitteln, welcher Vertex aus der Vertex-Array gezeichnet wird.
Das Rendering ist nicht besonderes, es spielt sich alles im Vertex-Shader ab.




Da es in diesem Beispiel nur maximal 6 Vertex-Punkte gibt, habe ich die VertexID mit einer einfachen Case-Schleife ausgewertet.


Vertex-Shader:

#version 330

layout (location = 10) in vec3 inPos;

out vec3 col;
 
void main(void)
{
  gl_Position = vec4(inPos, 1.0);
  switch (gl_VertexID) // Den aktuellen Vertex abfragen.
  {
    case 0:  col = vec3(1.0, 0.0, 0.0);
             break;
    case 1:  col = vec3(0.0, 1.0, 0.0);
             break;
    case 2:  col = vec3(0.0, 0.0, 1.0);
             break;
    case 3:  col = vec3(1.0, 1.0, 0.0);
             break;
    case 4:  col = vec3(0.0, 1.0, 1.0);
             break;
    default: col = vec3(1.0, 0.0, 1.0);
  }
}



Fragment-Shader

#version 330

out vec4 outColor;

in  vec3 col;

void main(void) {
  outColor = vec4(col, 1.0);
}


Autor: Mathias

Siehe auch