- #define GL_GEOMETRY_INPUT_TYPE 0x8917
- #define GL_GEOMETRY_INPUT_TYPE_ARB 0x8DDB
- #define GL_GEOMETRY_INPUT_TYPE_EXT 0x8DDB
DGL https://delphigl.com/forum/ |
|
Normal Debugging-Shader https://delphigl.com/forum/viewtopic.php?f=20&t=10821 |
Seite 1 von 1 |
Autor: | Bergmann89 [ So Apr 14, 2013 14:06 ] |
Betreff des Beitrags: | Normal Debugging-Shader |
Hey, ich versuch grad den Normal Debugging-Shader aus der Shadersammlung bei mir zum laufen zu bringen, aber so richtig will mir das nicht gelingen. Der Shader kompiliert ohne Fehler oder Warnungen, aber Bild hab ich trotzdem keins. Code:
Ich hab auch schon versucht glProgramParameteri mit GL_GEOMETRY_INPUT_TYPE und Co. aufzurufen (also nicht die _ARB bzw. _EXT-Konstanten) aber da bekomm ich ein GL_INVALID_ENUM von glGetError. Hab ich vlt. noch irgendwo was vergessen? MfG Bergmann. |
Autor: | Shaijan [ Mo Apr 15, 2013 11:23 ] |
Betreff des Beitrags: | Re: Normal Debugging-Shader |
Hey, ich kenne mich mit Geometry Shadern nicht aus, aber ich hab mal einen schnellen Blick in die Docu und den GLEW header geworfen. Anscheinend giebt es in OpenGL < 4 glProgramParameter garnicht. D.h. du musst die ARB/EXT Variante benutzen. Allerdings gibt man diese Werte in OpenGL >= 3(.2) direkt im Shader über einen layout specifier an. Also auch in OpenGL 4 nicht über glProgramParameter. Die konstanten sind nur zum Abrufen der entsprechenden Werte da (mit glGetProgram). Hier die Werte der Konstanten aus dem GLEW Header. Daraus wird ersichtlich warum du einen GL_INVALID_ENUM bekommst. Code:
Also mein Tip (ohne mich damit auszukennen): Benutze für OpenGL <= 2.1 glProgramParameterARB/EXT und für OpenGL >= 3 den layout specifier im shader. Hier nochmal ein Artikel aus dem opengl wiki: https://www.opengl.org/wiki/Geometry_Shader Dort steht auch in der NOTE am Anfang, dass die Extensions sich durchaus von der core Funktionalität unterscheiden. Gruß Shai |
Autor: | Bergmann89 [ Mo Apr 15, 2013 16:36 ] |
Betreff des Beitrags: | Re: Normal Debugging-Shader |
Hey, ich hab das mal fix ausprobiert. Ich hab nen 4.2er Context, also hab ich das im Shader über das layout angegeben, da bekomm ich dann beim compilieren nen Fehler: Unbekanntes Zeichen "". Keine Ahnung was er mir damit sagen will. Die ARB/EXT Funktion hab ich auch mal probiert, aber da komm ich auf das gleiche Ergebnis wie vorher. MfG Bergmann. |
Autor: | Lord Horazont [ Mo Apr 15, 2013 16:40 ] |
Betreff des Beitrags: | Re: Normal Debugging-Shader |
PAnsiChar vs. PWideChar? grüße |
Autor: | Bergmann89 [ Mo Apr 15, 2013 17:14 ] |
Betreff des Beitrags: | Re: Normal Debugging-Shader |
Hey, bei mir sin alles AnsiString (zumindest im Shader). Ich hatte in dem ShaderBuilder ne Funktion die ihr result nicht initialisiert hat, da kahm dann mist raus. Hab die layouts jetzt drin, aber seh trotzdem noch nichts ![]() Code:
Code:
|
Autor: | Aya [ Mo Apr 15, 2013 17:41 ] |
Betreff des Beitrags: | Re: Normal Debugging-Shader |
Probier es mal ohne das Leerzeichen: "layout(" statt "layout (". |
Autor: | Bergmann89 [ Mo Apr 15, 2013 18:06 ] |
Betreff des Beitrags: | Re: Normal Debugging-Shader |
Geht leider auch nicht. |
Autor: | Wölfchen [ Mo Apr 15, 2013 19:08 ] |
Betreff des Beitrags: | Re: Normal Debugging-Shader |
also ich kann ja kein C aber ausser in Zeile 12 hast du überall Vec4 für Vertex stehn... nur da hast du Vec3 stehn. und hat ein vec3 einen [3]ten wert? (Zeile 9) |
Autor: | Bergmann89 [ Mo Apr 15, 2013 19:40 ] |
Betreff des Beitrags: | Re: Normal Debugging-Shader |
Das is kein C, das ist die ShaderSprache glsl^^ Ich hab mal noch bisl rum probiert. Wenn ich anstatt der Normale einfach nen vec4(1, 0, 0, 0) drauf addiere, dann gehts. Also haut irgendwas mit dem varying net hin. Ich hab zum Test im VertexShader die Normales auf vec4(1, 0, 0, 0) gesetzt. €: habs gefunden. da fehlt ein "in" Code:
was so ein kleines Wörtchen doch ausmachen kann^^ Danke an Alle die da ihren Gehirnschmalz mit rein gesetckt haben ![]() |
Autor: | Shaijan [ Di Apr 16, 2013 08:17 ] |
Betreff des Beitrags: | Re: Normal Debugging-Shader |
Hey, mir fällt da noch etwas auf: der 'varying' qualifier ist deprecated seit GLSL 1.30. Du gibst die Version explizit als 1.50 an, solltest also auf die neuere 'in' und 'out' qualifier umsteigen. Und du solltest dich entscheiden. Entweder benutzt du OpenGL >= 3.2 geometry shader, oder du benutzt die Extension (die Extension ist noch aktiviert im shader). Was in der registry https://www.opengl.org/registry/specs/A ... hader4.txt unter "Dependencies on OpenGL 3.2" und "Modifications to the OpenGL Shading Language Specification" steht, lässt mich jedenfalls denken, dass es keine gute Idee ist Extension und Core zu mischen. Gruß Shai |
Autor: | Bergmann89 [ Di Apr 16, 2013 16:57 ] |
Betreff des Beitrags: | Re: Normal Debugging-Shader |
Hey, jo da muss nochmal dran gefeilt werden um die ganzen unterschiedlichen Versionen abzudecken. Ich war nur erstma happy das es funktioniert und wollte das hier kundtun^^ MfG Bergmann |
Seite 1 von 1 | Alle Zeiten sind UTC + 1 Stunde |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |