Computergrafik

2 D Texturen Vorbereiten

2D Texturen im Shader | | 2D Texturen Mehrfachtexturen

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 (es gibt kein glUniformTexture2Dv vergleichbar mit glUniformMatrix4fv), 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);


2D Texturen im Shader | | 2D Texturen Mehrfachtexturen

Options: