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;
}