Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: So Jul 13, 2025 23:14

Foren-Übersicht » Programmierung » Shader
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 11 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Normal Debugging-Shader
BeitragVerfasst: So Apr 14, 2013 14:06 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 18:56
Beiträge: 1213
Programmiersprache: Delphi/FPC
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:
  1.   glProgramParameteri(fProgramObj, GL_GEOMETRY_INPUT_TYPE_EXT, fGeometryInputType);      //fGeometryInputType = GL_TRIANGLES
  2.   glProgramParameteri(fProgramObj, GL_GEOMETRY_OUTPUT_TYPE_EXT, fGeometryOutputType);    //fGeometryOutputType = GL_LINE_STRIP
  3.   glProgramParameteri(fProgramObj, GL_GEOMETRY_VERTICES_OUT_EXT, fGeometryVerticesOut);  //fGeometryVerticesOut = 6
  4.   for i := 0 to Count-1 do
  5.     Items[i].Compile; //Items ist eine Liste von glShaderObj-Klassen (hier 3 Stück: VertShader, FragShader, GeoShader)
  6.   glLinkProgram(fProgramObj);

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.

_________________
Aktuelle Projekte: BumpMapGenerator, Massive Universe Online
Auf meiner Homepage gibt auch noch paar Projekte und Infos von mir.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Normal Debugging-Shader
BeitragVerfasst: Mo Apr 15, 2013 11:23 
Offline
DGL Member
Benutzeravatar

Registriert: Di Sep 06, 2005 18:34
Beiträge: 362
Wohnort: Hamburg
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:
  1.  
  2. #define GL_GEOMETRY_INPUT_TYPE 0x8917
  3. #define GL_GEOMETRY_INPUT_TYPE_ARB 0x8DDB
  4. #define GL_GEOMETRY_INPUT_TYPE_EXT 0x8DDB
  5.  


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

_________________
Der Mensch hat neben dem Trieb der Fortpflanzung und dem zu essen und zu trinken zwei Leidenschaften: Krach zu machen und nicht zuzuhören. (Kurt Tucholsky)
Schwabbeldiwapp, hier kommt die Grütze. (Der Quästor)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Normal Debugging-Shader
BeitragVerfasst: Mo Apr 15, 2013 16:36 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 18:56
Beiträge: 1213
Programmiersprache: Delphi/FPC
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.

_________________
Aktuelle Projekte: BumpMapGenerator, Massive Universe Online
Auf meiner Homepage gibt auch noch paar Projekte und Infos von mir.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Normal Debugging-Shader
BeitragVerfasst: Mo Apr 15, 2013 16:40 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
PAnsiChar vs. PWideChar?

grüße

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Normal Debugging-Shader
BeitragVerfasst: Mo Apr 15, 2013 17:14 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 18:56
Beiträge: 1213
Programmiersprache: Delphi/FPC
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 :( So sieht das Ganze aus:

Code:
  1. /* DEFINITIONS debug_normals.vert */
  2. varying vec4 vVertex;
  3. varying vec3 vNormal;
  4.  
  5. void main(void){
  6.  
  7. /* SECTION debug_normals.vert - debug_normals_main */
  8.     vVertex       = gl_Vertex;
  9.     vNormal       = gl_Normal;
  10.     gl_FrontColor = gl_Color;
  11.     gl_Position   = gl_ModelViewProjectionMatrix * gl_Vertex;
  12. /* END SECTION */
  13. }

 
Code:
  1. #version 150
  2. #extension GL_ARB_geometry_shader4 : enable
  3.  
  4. layout (triangles) in;
  5. layout (line_strip, max_vertices = 6) out;
  6.  
  7. /* DEFINITIONS debug_normals.geo */
  8. varying vec4 vVertex[3];
  9. varying vec3 vNormal[3];
  10.  
  11. /* FUNCTIONS debug_normals.geo */
  12. void CreateNormal(vec3 Vertex, vec3 Normal)
  13. {
  14.     gl_Position = gl_ModelViewProjectionMatrix * vec4(Vertex, 1.0f);
  15.     EmitVertex();
  16.  
  17.     gl_Position = gl_ModelViewProjectionMatrix * vec4(Vertex + Normal, 1.0f);
  18.     EmitVertex();
  19.  
  20.     EndPrimitive();
  21. }
  22.  
  23. void main(void){
  24. /* SECTION debug_normals.geo - debug_normals_main */
  25.     for ( int i = 0; i < 3; ++i )
  26.     {
  27.         CreateNormal(vVertex[i].xyz, vNormal[i]);
  28.     }
  29. /* END SECTION */
  30. }

_________________
Aktuelle Projekte: BumpMapGenerator, Massive Universe Online
Auf meiner Homepage gibt auch noch paar Projekte und Infos von mir.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Normal Debugging-Shader
BeitragVerfasst: Mo Apr 15, 2013 17:41 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Probier es mal ohne das Leerzeichen: "layout(" statt "layout (".


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Normal Debugging-Shader
BeitragVerfasst: Mo Apr 15, 2013 18:06 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 18:56
Beiträge: 1213
Programmiersprache: Delphi/FPC
Geht leider auch nicht.

_________________
Aktuelle Projekte: BumpMapGenerator, Massive Universe Online
Auf meiner Homepage gibt auch noch paar Projekte und Infos von mir.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Normal Debugging-Shader
BeitragVerfasst: Mo Apr 15, 2013 19:08 
Offline
DGL Member

Registriert: Do Mär 05, 2009 20:17
Beiträge: 284
Wohnort: Kaiserslautern
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)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Normal Debugging-Shader
BeitragVerfasst: Mo Apr 15, 2013 19:40 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 18:56
Beiträge: 1213
Programmiersprache: Delphi/FPC
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:
  1. varying in vec3 vNormal[3];

was so ein kleines Wörtchen doch ausmachen kann^^
Danke an Alle die da ihren Gehirnschmalz mit rein gesetckt haben :)

_________________
Aktuelle Projekte: BumpMapGenerator, Massive Universe Online
Auf meiner Homepage gibt auch noch paar Projekte und Infos von mir.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Normal Debugging-Shader
BeitragVerfasst: Di Apr 16, 2013 08:17 
Offline
DGL Member
Benutzeravatar

Registriert: Di Sep 06, 2005 18:34
Beiträge: 362
Wohnort: Hamburg
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

_________________
Der Mensch hat neben dem Trieb der Fortpflanzung und dem zu essen und zu trinken zwei Leidenschaften: Krach zu machen und nicht zuzuhören. (Kurt Tucholsky)
Schwabbeldiwapp, hier kommt die Grütze. (Der Quästor)


Zuletzt geändert von Shaijan am Di Apr 16, 2013 17:00, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Normal Debugging-Shader
BeitragVerfasst: Di Apr 16, 2013 16:57 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 18:56
Beiträge: 1213
Programmiersprache: Delphi/FPC
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

_________________
Aktuelle Projekte: BumpMapGenerator, Massive Universe Online
Auf meiner Homepage gibt auch noch paar Projekte und Infos von mir.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 11 Beiträge ] 
Foren-Übersicht » Programmierung » Shader


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.009s | 16 Queries | GZIP : On ]