Frage zu GLSL Shader
-
Hey Leute!
Ich habe mich mal an folgendem Tutorial probiert:
http://wiki.delphigl.com/index.php/Tutorial_WassereffektDer reine OpenGL Part ist kein Problem aber dann im Shaderbereich weiss ich nicht wirklich weiter (habe nicht viel Erfahrung mit Shadern und lerne es noch )
Im Fragmentshader stehen folgende 3 Werte/Texturen:
uniform sampler2D refractTex; uniform sampler2D reflectTex; uniform sampler2D bumpMap;
Doch wie bekomme ich die in den Shader hinein?
-
Schau ma unter
glGetUniformLocation
und
glUniformSo geht das zumindest bei uniforms von primitiven typen. sampler2D kenne ich nicht,
-
Ahja okay.
Ich dachte immer damit gehen nur normale Zahlenwerte aber ich probier es mal mit einer Textur.
-
uniform sampler2D refractTex;
uniform sampler2D reflectTex;
uniform sampler2D bumpMap;glActiveTexture(GL_TEXTURE0);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, myRefractTex);
glUniform1i(glGetUniformLocation(myShaderProgram, "refractTex"), 0);glActiveTexture(GL_TEXTURE1);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, myReflectTex);
glUniform1i(glGetUniformLocation(myShaderProgram, "reflectTex"), 1);glActiveTexture(GL_TEXTURE2);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, myBumpMap);
glUniform1i(glGetUniformLocation(myShaderProgram, "refractTex"), 2);Zeichnen.
glActiveTexture(GL_TEXTURE2);
glDisable(GL_TEXTURE_2D);glActiveTexture(GL_TEXTURE1);
glDisable(GL_TEXTURE_2D);glActiveTexture(GL_TEXTURE0);
glDisable(GL_TEXTURE_2D);
-
Kleinen Fehler bei der 3. Texturangabe behoben:
glActiveTexture(GL_TEXTURE2);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, myBumpMap);
glUniform1i(glGetUniformLocation(myShaderProgram, "bumpMap"), 2);
-
Super! Besten dank