[OpenGL 4.2] VS out landet nicht in FS in

Für Fragen zu Grafik APIs wie DirectX und OpenGL sowie Shaderprogrammierung.
Antworten
Matthias Gubisch
Establishment
Beiträge: 487
Registriert: 01.03.2009, 19:09

[OpenGL 4.2] VS out landet nicht in FS in

Beitrag von Matthias Gubisch »

Hallo

ich spiele mich zur Zeit ein wenig mit OpenGL Shadern.

Hier mal der Vertex Shader

Code: 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: 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, 08:09, insgesamt 1-mal geändert.
Bevor man den Kopf schüttelt, sollte man sich vergewissern einen zu haben
Benutzeravatar
mOfl
Beiträge: 37
Registriert: 23.10.2010, 21:53

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

Beitrag von mOfl »

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: Alles auswählen

gl_Position = gl_ModelViewProjectionMatrix * vec4(Position3, 1.0);
Probier das mal.
Matthias Gubisch
Establishment
Beiträge: 487
Registriert: 01.03.2009, 19:09

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

Beitrag von Matthias Gubisch »

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
kristof
Beiträge: 92
Registriert: 19.01.2009, 13:05

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

Beitrag von kristof »

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.
Matthias Gubisch
Establishment
Beiträge: 487
Registriert: 01.03.2009, 19:09

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

Beitrag von Matthias Gubisch »

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
Benutzeravatar
dot
Establishment
Beiträge: 1743
Registriert: 06.03.2004, 18:10
Echter Name: Michael Kenzel
Kontaktdaten:

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

Beitrag von dot »

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...
Matthias Gubisch
Establishment
Beiträge: 487
Registriert: 01.03.2009, 19:09

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

Beitrag von Matthias Gubisch »

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
Antworten