OpenGL Black Screen
-
Einfach mal mit einem opengl debugger oder glGetError nach jeder anweisung versuchen. Ist dass C oder C++?
-
Sollte ja C sein. Ich probiere deinen Vorschlag mal aus.
-
Nach Zeile 149 & 150 bekomme ich einen Fehler 1282.
Was bedeutet der?
-
Sven S. schrieb:
Nach Zeile 149 & 150 bekomme ich einen Fehler 1282.
Glaub ich net.
-
Ich hab in den Finktionen, wo die Shader erstellt werden abgefragt, aber da kam keine Fehlermeldung. Erst da,wo ich geschriebenen habe, kam eine Fehlermeldung.
-
-
GidF schrieb:
Sven S. schrieb:
Was bedeutet der?
Kluge Antwort, warum braucht man eigentlich noch Foren um Menschen zu fragen, die sich damit auskennen. Frag doch Google, dass weiß alles. Also brauche ich ja hier nicht mehr zu fragen, da man direkt auf Google verwiesen wird. Denn es fuhlen sich einige, in ihren Augen, durch so simple Frage von Anfängern genervt.
-
Sven S. schrieb:
GidF schrieb:
Sven S. schrieb:
Was bedeutet der?
Kluge Antwort, warum braucht man eigentlich noch Foren um Menschen zu fragen, die sich damit auskennen. Frag doch Google, dass weiß alles. Also brauche ich ja hier nicht mehr zu fragen, da man direkt auf Google verwiesen wird. Denn es fuhlen sich einige, in ihren Augen, durch so simple Frage von Anfängern genervt.
Wenn du ein Problem hast, strengst du zuallererst einmal die Suchmaschine deines Vertrauens an. Manchmal kommt man damit zu keinem Ergebnis, dann (und wirklich erst dann) sind Foren die richtige Anlaufstelle. Deine Ausgangsfrage passt z.B. ganz gut in ein Forum. In einem Forum wird aber auch Eigeninitiative erwartet. Niemand hat Lust einem Anderen seine Arbeit zu machen. Die Frage "Was bedeutet der?" lässt aber jegliche Anzeichen von Eigeninitiative vermissen. Wenn du ernsthaft versucht hättest dich mit diesem Problem auseinanderzusetzen wärst du wohl ohne allzuviel Aufwand beim Ergebnis gelandet. Wenn du das nicht schaffst sehe ich schwarz für deine zukünftigen Projekte.
Ich will aber mal nett sein und dir eine Antwort geben. Der Fehler tritt in einem der drei folgenden Fälle ein:GL_INVALID_OPERATION is generated if program is not a value generated by OpenGL. GL_INVALID_OPERATION is generated if program is not a program object. GL_INVALID_OPERATION is generated if program has not been successfully linked.
Quelle
Es ist ziemlich eindeutig, dass etwas beim Parameter program, in deinem Fall also shaderProgrammID schiefgelaufen ist. Den Versuch herauszufinden was, überlasse ich erstmal dir
-
-
Zum einen, versuche ich schon eine Weile herauszufinden, auch mit Hilfe von Google, warum mein Code bei meinen Kollegen funktioniert und bei mir nicht. Vorallem haben sie ältere Laptops und können max OpenGL 3.3 nutzen. Auch den Fehler 1282 habe ich gegoogelt aber keine eindeutige Antwort bekommen, da es vom Code abhängt. Daher habe ich gehofft, dass ich hier geholfen bekomme, da ich meinen Code hier gepostet habe und habe deswegen vieleicht etwas ruppig reagiert. Aber danke für die Antwort, ich werde mich damit weiter beschäftigen und dann schreiben.
-
Habe es endlich geschafft, nachdem ich noch herausgefunden habe, wie ich den errorLog auslese, kamen zwei kleine Probleme zum Vorschein.
Es gab sowohl beim vertexShader als auch beim fragmentShader einen Fehler.Beim vertexshader muss der input sv_Position vom Typ vec4 sein und nicht vec3.
alter Code
#version 330 in vec3 s_vPosition; in vec4 s_vColor; out vec4 FragColor; void main() { FragColor = s_vColor; gl_Position = s_vPosition; }
neuer Code
#version 330 in vec4 s_vPosition; in vec4 s_vColor; out vec4 FragColor; void main() { FragColor = s_vColor; gl_Position = s_vPosition; }
Beim fragmentShader darf man nicht gl_Color schreiben, hier kam die Meldung, dass er den Input gl_Color nicht modifizieren kann, obwohl es der Output ist.
alter Code
#version 330 in vec4 FragColor; out vec4 gl_Color; void main() { gl_Color = FragColor; }
neuer Code
#version 330 in vec4 FragColor; out vec4 Color; void main() { Color = FragColor; }