Eine mögliche Implementierung von Texture Mapping in GLSL könnte so aussehen:
Vertex Shader
in vec3 in_pos; // Vertex-Position
in vec2 in_tc; // Texturkoordinaten
uniform mat4 mvp; // Transformation
out vec2 tc;
void main() {
// Textur-Koordinaten weiter an den
// Fragment Shader (werden dann interpoliert)
tc = in_tc;
gl_Position = mvp * vec4(in_pos, 1.0);
}Fragment Shader
Texturen kommen als Typ sampler2D in den Shader. Wir können den Wert an einer bestimmten Texturkoordinate mit der Funktion texture(sampler2D texture, vec2 uv) bekommen.
in vec2 tc; // Interpolierte Texturkoordinate
uniform sampler2D color; // Geladene Textur
out vec4 out_color;
void main() {
out_color = texture(diffuse_texture, tc).rgba;
}