GLSL seperate vertex shader



  • Hallo Leute!
    Bin wiedermal auf ein kleines Problem gestoßen.
    Versuche gerade auf seperate shader objects umzusteigen und bekomme es nicht hin simple Dreiecke zu zeichnen.
    Als Ursache sehe ich einen fehlerhaften VertexShader; denn wenn ich ihn neben den anderen Shadern nicht mit glUseProgramStages linke dann funktioniert es einwandfrei andernfalls habe ich ein schwarzes Bild.

    der VertexShader:

    #version 430
    layout(location=0) uniform vec3 inPos;
    
    out gl_PerVertex
    {
     vec4 gl_Position;
    };
    
    void main()
    {
      gl_Position = vec4(inPos,1);
    }
    

    Im voraus dankend
    shaderBob



  • Ich kann dir nicht genau sagen warums nicht funktioniert,
    aber vllt hilft dir ja ein Beispielcode von mir, der Funktioniert ^^

    // ............. das ganze init und buffer zeug
    
    		glUseProgram(this->programID);
    
    		this->MVP = this->viewport->getCamera()->getProjectionMatrix() * this->viewport->getCamera()->getViewMatrix() * this->modelMatrix;
    
    		glUniformMatrix4fv(this->matrixID, 1, GL_FALSE, &this->MVP[0][0]);
    
    		// 1rst attribute buffer : vertices
    		glEnableVertexAttribArray(0);
    		glBindBuffer(GL_ARRAY_BUFFER, this->vertexBuffer);
    		glVertexAttribPointer(
    		   0,                  // attribute 0. No particular reason for 0, but must match the layout in the shader.
    		   3,                  // size
    		   GL_FLOAT,           // type
    		   GL_FALSE,           // normalized?
    		   0,                  // stride
    		   (void*)0            // array buffer offset
    		);
    
    // ............ das ganze draw zeug
    
    #version 430 core
    
    layout(location = 0) in vec3 pos;
    
    uniform mat4 MVP;
    
    void main(){
    	gl_Position = MVP * vec4(pos, 1);
    }
    

    vllt liegt es ja schon daran, dass du hinter deinem layout "uniform" statt "in" geschrieben hast
    und "gl_Position" brauchst du nicht großartig vor definieren.

    vllt hilft dir das ja

    Gruß

    Jango


Anmelden zum Antworten