Frage zu GLSL Shader



  • Hey Leute!

    Ich habe mich mal an folgendem Tutorial probiert:
    http://wiki.delphigl.com/index.php/Tutorial_Wassereffekt

    Der 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
    glUniform

    So 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 🙂


Log in to reply