[OpenGL 4.2] VS out landet nicht in FS in

Für Fragen zu Grafik APIs wie DirectX und OpenGL sowie Shaderprogrammierung.

[OpenGL 4.2] VS out landet nicht in FS in

Beitragvon Matthias Gubisch » 16.07.2012, 16:46

Hallo

ich spiele mich zur Zeit ein wenig mit OpenGL Shadern.

Hier mal der Vertex Shader

Code: Ansicht erweitern :: Alles auswählen
#version 420

layout(location = 0) in vec3 Position3;

out vec4 vertexColor;

void main ()
{
gl_Position = gl_ModelViewProjectionMatrix * vec4(Position3, 1.0);
vertexColor = vec4(1.0, 0.0, 0.0, 1.0);
}


und hier der Fragment Shader

Code: Ansicht erweitern :: Alles auswählen
#version 420

in vec4 vertexColor;
out vec4 outputColor;

void main()
{
outputColor = vertexColor;
}


Soweit ich das verstanden habe müsste mein Mesh in Rot auf dem Bildschrim erscheinen. Den Versuch mache ich an einem einfachen Dreieck.
Leider erscheint das Dreieck zwar an der richtigen Stelle, allerdings ist es tiefschwarz anstatt rot. Setze ich im Fragmentprogramm die Ausgabefarbe direkt funktioniert dies.
Es scheint mir fast so als würde der Vertexshader-Output nicht richtig an den Fragmentshader weitergegeben :(

Beim Compilieren bekomme ich weder Fehler noch Warnings.

Muss ich die Komponenten noch irgendwie manuell binden? Sämtliche Turoials die ich so gefunden habe sprechen davon dass das nicht notwendig ist.
Zuletzt geändert von Matthias Gubisch am 17.07.2012, 07:09, insgesamt 1-mal geändert.
Bevor man den Kopf schüttelt, sollte man sich vergewissern einen zu haben
Matthias Gubisch
 
Beiträge: 183
Registriert: 01.03.2009, 19:09
Alter Benutzername: rave3d

Re: [OpenGL 4.2] VS out landet nicht in FS in

Beitragvon mOfl » 16.07.2012, 20:01

Hast du den Vertex Shader gekürzt oder ist das der vollständige Code? Der sollte so nämlich nicht kompilieren, weil du vPosition nicht definiert hast. Die korrekte Variable für die Position lautet gl_Position, also

Code: Ansicht erweitern :: Alles auswählen
gl_Position = gl_ModelViewProjectionMatrix * vec4(Position3, 1.0);


Probier das mal.
Benutzeravatar
mOfl
 
Beiträge: 31
Registriert: 23.10.2010, 20:53

Re: [OpenGL 4.2] VS out landet nicht in FS in

Beitragvon Matthias Gubisch » 17.07.2012, 07:08

Sorry war ein Copy Paste fehler, hab beim rumprobieren vPosition mal definiert gehabt. Habs oben geändert

mit gl_Position funktionierts so leider auch nicht.
Wenn ich in der ersten Zeile allerdings "#version 420 compatibility" schreibe funktioniert der Shader wie gewünscht.
Bevor man den Kopf schüttelt, sollte man sich vergewissern einen zu haben
Matthias Gubisch
 
Beiträge: 183
Registriert: 01.03.2009, 19:09
Alter Benutzername: rave3d

Re: [OpenGL 4.2] VS out landet nicht in FS in

Beitragvon kristof » 17.07.2012, 07:49

Ich bin mir grad nicht 100% sicher, aber so weit ich weiß ist das in OpenGL eingebaute Matrix System (also glTranslate, glRotate, glLoadMatrix ...) seit OpenGL 3.x deprecated. Einhergehend damit wurden auch die in GLSL eingebauten Variablen gl_ModelViewProjectionMatrix und co bedeutungslos.
Du müsstest also die Projektions- und Transformations-Matrizen selber berechnen und über ein uniform übergeben.
Ich bin mir aber wie gesagt nicht ganz sicher. Dafür würde aber sprechen, dass es mit der compatibility Option geht.
kristof
 
Beiträge: 45
Registriert: 19.01.2009, 13:05

Re: [OpenGL 4.2] VS out landet nicht in FS in

Beitragvon Matthias Gubisch » 17.07.2012, 11:30

Danke für den Hinweis, das Problem war tatsächlich dass es die eingebauten Matrizen nicht mehr gibt.
Schön nur dass es da keinerlei Warnungen gibt :(
Bevor man den Kopf schüttelt, sollte man sich vergewissern einen zu haben
Matthias Gubisch
 
Beiträge: 183
Registriert: 01.03.2009, 19:09
Alter Benutzername: rave3d

Re: [OpenGL 4.2] VS out landet nicht in FS in

Beitragvon dot » 17.07.2012, 11:51

Matthias Gubisch hat geschrieben:Danke für den Hinweis, das Problem war tatsächlich dass es die eingebauten Matrizen nicht mehr gibt.
Schön nur dass es da keinerlei Warnungen gibt :(

Hast du auch sicher einen Core Profile Context? Denn wenn ja, dann sollte das eigentlich tatsächlich nicht kompilieren...
Benutzeravatar
dot
 
Beiträge: 1152
Registriert: 06.03.2004, 18:10

Re: [OpenGL 4.2] VS out landet nicht in FS in

Beitragvon Matthias Gubisch » 17.07.2012, 16:33

Hatte wohl anscheinend keinen Core Profile Context.
Habs umgestellt und jezt bekomm ich beim compilieren auch entsprechende Fehlermeldungen....

Danke nochmal für eure Hilfe
Bevor man den Kopf schüttelt, sollte man sich vergewissern einen zu haben
Matthias Gubisch
 
Beiträge: 183
Registriert: 01.03.2009, 19:09
Alter Benutzername: rave3d


Zurück zu Grafikprogrammierung

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast