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

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

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

Options: