Computergrafik
2D Textur-Bindung
← 2D GLSL Texturen | ● | 2D Multi-Texturen →
In OpenGL: die Location des uniformen Textur-Objekts muss bekannt sein
GLint loc_tex = glGetUniformLocation (prog, "tex");
Abweichung von der Norm: dieser uniformen Variablen weißt man jetzt keine Textur selber zu, sondern die Nummer der Textureinheit:
glUniform1i (loc_tex, 0); // Use texture unit 0 for "tex"
An diese Textureinheit bindet man eine vorher definierte Textur:
glActiveTexture (GL_TEXTURE0 + 0); // Define contents of texture unit 0
glBindTexture (GL_TEXTURE_2D, name_tex);
glBindTexture (GL_TEXTURE_2D, name_tex);
Damit kann die Textur im Shader benutzt werden!
Natürlich können wir im Framework direkt (ohne Location abzufragen) mit lglUniformi()
den Wert setzen und danach aktivieren:
lglUniformi ("tex", 0); // Use texture unit 0 for "tex"
glActiveTexture (GL_TEXTURE0 + 0); // Define contents of texture unit 0
glBindTexture (GL_TEXTURE_2D, name_tex);
glActiveTexture (GL_TEXTURE0 + 0); // Define contents of texture unit 0
glBindTexture (GL_TEXTURE_2D, name_tex);
Natürlich geht es mit dem Framework auch noch bequemer (Stefan: hint hint hint ;-)
lglSampler2D("tex", name_tex, 0);
← 2D GLSL Texturen | ● | 2D Multi-Texturen →