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