Suche…


Syntax

  • #version Versionsnummer // Welche GLSL-Version verwenden wir?
  • void main () {/ * Code * /} // Hauptfunktion des Shaders
  • im Typennamen; // Gibt einen Eingabeparameter an - GLSL 1.30
  • out typname; // Gibt einen Ausgabeparameter an - GLSL 1.30
  • Inout-Typname; // Parameter für Eingabe und Ausgabe - GLSL 1.30

Parameter

Parameter Einzelheiten
Art Der Typ des Parameters muss ein integrierter GLSL-Typ sein.

Bemerkungen

Um anzugeben, welche Version von GLSL zum Kompilieren eines #version 330 verwendet werden soll, verwenden Sie den Präprozessor der Version, z. B. #version 330 . Jede Version von OpenGL ist erforderlich, um bestimmte Versionen von GLSL zu unterstützen . Wenn kein #version Präprozessor oben in einem Shader definiert ist, wird die Standardversion 1.10 verwendet.

Shader zum Rendern eines farbigen Rechtecks

Ein Shader-Programm enthält im OpenGL- Sinn eine Reihe verschiedener Shader. Jedes Shader-Programm muss mindestens einen Vertex- Shader enthalten, der die Position der Punkte auf dem Bildschirm berechnet, und einen Fragment- Shader, der die Farbe jedes Pixels berechnet. (Eigentlich ist die Geschichte länger und komplexer, aber trotzdem ...)

Die folgenden Shader sind für #version 110 , sollten jedoch einige Punkte veranschaulichen:

Vertex-Shader:

#version 110

// x and y coordinates of one of the corners
attribute vec2 input_Position;

// rgba colour of the corner. If all corners are blue, 
// the rectangle is blue. If not, the colours are 
// interpolated (combined) towards the center of the rectangle    
attribute vec4 input_Colour; 

// The vertex shader gets the colour, and passes it forward     
// towards the fragment shader which is responsible with colours
// Must match corresponding declaration in the fragment shader.  
varying vec4 Colour;    

void main()
{
    // Set the final position of the corner
    gl_Position = vec4(input_Position, 0.0f, 1.0f);
    
    // Pass the colour to the fragment shader
    UV = input_UV;
}

Fragment-Shader:

#version 110

// Must match declaration in the vertex shader.  
varying vec4 Colour;

void main()
{
    // Set the fragment colour
    gl_FragColor = vec4(Colour);
}


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow