Übergabe einer mat4 Matrix an den Vertex-Shader funktioniert nicht



  • Hallo,
    ich sitze jetzt schon seit Stunden an einer wahnsinnig simplen Aufgabe, weil ich meinen Fehler einfach nicht finde und brauche dringend Hilfe. Es geht einfach nur darum, in der main.cpp eine Einheitsmatrix mehrmals zu transformieren, das Ergebnis an den Vertex-Shader weiterzugeben und dort mit den Positions-Attributen zu verrechnen. Leider wird nicht ausgegeben, wenn ich im Shader die Attribute mit meiner uniform-Matrix multipliziere. Das Programm läuft, aber nichts wird gezeichnet.

    Meine main.cpp:

    GLuint EinheitLoc = glGetUniformLocation( shaderProgram.getProgramID(), "Modelmatrix");
    mat4 einheitsmatrix = mat4(1.0f);
    glUniformMatrix4fv(EinheitLoc, 1, GL_FALSE, value_ptr(einheitsmatrix));
    

    Vertex Shader:

    #version 330 core
    
    uniform mat4 Modelmatrix;
    in vec4 positionAttribute;
    
    void main(){
    	gl_Position = Modelmatrix * positionAttribute;
    }
    

    Habe auch schon probiert die Einheitsmatrix im Shader direkt zu erzeugen und mit positionAttribute zu multiplizieren und da wurde es einwandfrei gezeichnet. Also kann es ja nur an der Übergabe der uniform-Variable liegen, aber ich komme einfach nicht drauf, was da falsch ist.



  • So spontan würde ich einfach sagen, dass dir die Projektions-Matrix fehlt.

    Achja, du bist du im falschen Unter-Forum 😉



  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (alle ISO-Standards) in das Forum Spiele-/Grafikprogrammierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Auf anhieb kann ich keinen Fehler sehen. Prüf mal, was in EinheitLoc steht und ruf auch mal gleich nach dem setzen openGL-Fehlermeldungen ab.

    (Ich nehme doch mal an, dass du den Shader auf Compile- und Linkerfehler überprüft hast)


Anmelden zum Antworten