Wie kann ich einem einzelnen Shader mehrere Texturen übergeben?

Ich benutze Freeglut, GLEWund Teufel zuRendern Sie eine strukturierte Teekanne mit einem Vertex- und Fragment-Shader. Dies alles funktioniert gut in OpenGL 2.0 und GLSL 1.2 auf Ubuntu 14.04.

Jetzt möchte ich der Teekanne eine Reliefkarte hinzufügen. Offensichtlich braut mein Dozent keinen eigenen Tee und weiß daher nicht, ob das der Fall istglatt. Jedenfalls habe ich gefundenein gut aussehendes Tutorial zum Old-School-Bump-Mapping Dazu gehört ein Fragment-Shader, der beginnt:

uniform sampler2D DecalTex; //The texture
uniform sampler2D BumpTex; //The bump-map 

Was sie nicht erwähnen, istWie um zunächst zwei Texturen an den Shader zu übergeben.

Zuvor habe ich

//OpenGL cpp file
glBindTexture(GL_TEXTURE_2D, textureHandle);

//Vertex shader
gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;

//Fragment shader
gl_FragColor = color * texture2D(DecalTex,gl_TexCoord[0].xy);

so jetzt ich

//OpenGL cpp file
glBindTexture(GL_TEXTURE_2D, textureHandle);
glBindTexture(GL_TEXTURE_2D, bumpHandle);

//Vertex shader
gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
gl_TexCoord[1] = gl_TextureMatrix[1] * gl_MultiTexCoord1;

//Fragment shader
gl_FragColor = color * texture2D(BumpTex,gl_TexCoord[0].xy);
//no bump logic yet, just testing I can use texture 1 instead of texture 0

aber das geht nicht. Die Textur verschwindet vollständig (effektiv ist die Teekanne weiß). Ich habe GL_TEXTURE_2D_ARRAY, glActiveTexture und einige andere wahrscheinlich erscheinende, aber erfolglose Optionen ausprobiert.

Nachdem ich die üblichen gemischten Verweise auf OpenGL und GLSL neu und alt durchgesehen habe, bin ich zu dem Schluss gekommen, dass ich wahrscheinlich braucheglGetUniformLocation. Wie genau verwende ich das?in der OpenGL-cpp-Datei die bereits ausgefüllten Textur-Handles an den Fragment-Shader übergeben?

Wie übergebe ich eine Reihe von Texturen mit unterschiedlichen Größen an GLSL?Übergabe mehrerer Texturen von OpenGL an GLSL-ShaderMehrere Texturen in GLSL - nur eine funktioniert

(Dies sind Hausaufgaben, also antworten Sie bitte mit minimalen Codefragmenten (wenn überhaupt). Danke!)

Gelingt das nicht, hat jemand ein Tee-Kuschelnetz?