DGL
https://delphigl.com/forum/

Tessellation-Shader unter OpenGL 3.2 zum laufen bringen
https://delphigl.com/forum/viewtopic.php?f=20&t=10727
Seite 1 von 1

Autor:  Vinz [ Mi Jan 16, 2013 16:48 ]
Betreff des Beitrags:  Tessellation-Shader unter OpenGL 3.2 zum laufen bringen

Hallo Leute,

Ich wollte Tesselation-Shader in meinem c++ glsl-editor unter OpenGL 3.2 shader Version 150 (Mehr geht bei meiner GK leider nicht) zum laufen bringen, schaff es aber nicht.

Hat jemand vielleicht ein Hello World, mit Tesselation unter OpenGL 3.2?

Habe nix gefunden, alle Beispiele, die ich gesehen hab, laufen unter Shader-Version 400.

Leider hat auch schon die Anmeldung im Hauptprogramm nicht funktioniert.
Folgendes hab ich versucht:

Code:
  1.  
  2. ... // Vertex, Fragment, Geomerty - Shader werden compilt
  3.  
  4. GLuint tc = glCreateShader(GL_TESS_CONTROL_SHADER);
  5. const char * tcs = "...";
  6. glShaderSource(tc, 1, &tcs, NULL);
  7. glCompileShader(tc);
  8.  
  9. GLint infoLogLength;
  10. glGetShaderiv(tc, GL_INFO_LOG_LENGTH, &infoLogLength);
  11. GLchar* strInfoLog = new GLchar[infoLogLength + 1];
  12. glGetShaderInfoLog(tc, infoLogLength, NULL, strInfoLog);
  13. fprintf(stderr, "Compilation error in shader: %s\n", strInfoLog);
  14. delete[] strInfoLog;
  15.  
  16. ...// Das gleiche mit Tessellation Evaluation Shader
  17.  
  18. GLuint p = glCreateProgram();
  19. glAttachShader(p,v);
  20. glAttachShader(p,f);
  21. glAttachShader(p,g);
  22.  
  23. glAttachShader(p,tc);
  24. glAttachShader(p,te);
  25.  
  26. glLinkProgram(p);
  27. glUseProgram(p);
  28.  


Egal was ich für die Tess-Shader als Source angebe, es wird ignoriert,
ich bekomme keinen Compler-Log, für die anderen Shader schon.

Das Program läuft aber, Vertex, Fragment, Geomerty - Shader werden compilt und funktionieren, tc und te werden ignoriert.

Nebenbei noch eine Frage:
Kann man eigentlich seine GK mit solchen Experimenten schrotten?
Ich habe kürzlich in meiem editor von der QGL-Shader-Klasse auf die Funktionen, die über glew verfügbar sind gewechselt
(und zwar weil die QGLShader-Klasse von qt keine Tessellation-Shader unterstützt), bekomme seit dem öfters Blackscreens und die Lüfterkontrolle bleibt stets auf 100 %...
Is wohl eh Zeit für ne neue :mrgreen:

Autor:  Vinz [ Mi Jan 16, 2013 20:19 ]
Betreff des Beitrags:  Re: Tessellation-Shader unter OpenGL 3.2 zum laufen bringen

ok,
Grafikkarte ist kaputt :roll:
Kommt kein Signal mehr, wenn ich anschalte.
Wie kann sowas passieren?
Ich hatte nen Editor mit Qt-libs geschrieben.
Dann hab ich den Teil, wo die shader geladen werden erstmal nen simplen shader mit den üblichen Funktionen (siehe oben) geladen.
Im Programm hat dann die GK erst dann angefangen zu spinnen sobald ich
ne größere Displayliste oder VBO aktiviert habe.
Wahrscheinlich nur Zufall...
Aber hat jemand ne Ahnung, wie sowas passieren kann, ob man die Karte evtl wieder hinkrigt (Lüfter läuft mit 100 % sobald ich einschalte, aber kein Signal)?
Verliert man eigentlich (nachweislich) Garatieanspruch bei sowas?
Die Karte is eh uralt, aber wenn ich mit der neuen das selbe mache...

Autor:  Lord Horazont [ Mi Jan 16, 2013 22:38 ]
Betreff des Beitrags:  Re: Tessellation-Shader unter OpenGL 3.2 zum laufen bringen

Also nur durch Software (vor allem durch Treibersoftware des Herstellers, die du ja bei Verwendung von OpenGL verwendest) darf ne Grafikkarte (oder Hardware im allgemeinen) nicht kaputt gehen. Das wird Zufall sein.

Aber ich würde an deiner Stelle nochmal testen, ob das wirklich die Grafikkarte ist, kann auch beliebiges anderes Teil sein, z.B. CPU oder irgendwas im BIOS.

grüße

Autor:  Vinz [ Mi Jan 16, 2013 23:06 ]
Betreff des Beitrags:  Re: Tessellation-Shader unter OpenGL 3.2 zum laufen bringen

GK ausgebaut, angemacht, ausgemacht, GK wieder rein, GK geht wieder :D
Aber der Lüfter ist immer noch auf 100 %, kann zwar mit Smart Doctor die Lüftung kontrollieren, aber Temperaturanzeige ist seltsam, denke dass er die Temperatur nicht detektieren kann und deshalb auch gleich auf 100 geht, wenn der Rechner gestartet wird.

Autor:  Vinz [ Mi Jan 16, 2013 23:27 ]
Betreff des Beitrags:  Re: Tessellation-Shader unter OpenGL 3.2 zum laufen bringen

Unter Linux springt die GPU core Temperatur immer zwischen 64 und 192 Grad (MAX), vielleicht Temperatursensor hinüber, kann man den irgendwie im Bios abschalten?
Sorry dass das jetzt alles hier landet, gehört ja nicht hier her.
Aber wie siehts mit dem eigentlichen Problem aus, hat jemand ne Idee, warum
der Shadercompiler die Tessellation-Shader ignoriert?

Autor:  TAK2004 [ Do Jan 17, 2013 09:35 ]
Betreff des Beitrags:  Re: Tessellation-Shader unter OpenGL 3.2 zum laufen bringen

Gut möglich, bei mir ist damals der GPU-Lüfter Controller ausgestiegen, die Karte selber lieft noch problemlos, hatte das mit einem anderen GPU Lüfter und direktem Strom ausprobiert.

Autor:  Vinz [ Fr Jan 18, 2013 12:46 ]
Betreff des Beitrags:  Re: Tessellation-Shader unter OpenGL 3.2 zum laufen bringen

So, hab jetzt ne OGL4-fähige Karte, jetzt bekomm ich den Shaderinfolog für alle Shadertypen.
Aber ich schätze, ich muss erst noch OGL4 lernen...
Was mich schon nervt, ist, dass man alle Matrizen selber übergeben muss.
Warum sind die rausgenommen worden? Bessere Performance, wenn man sie nicht braucht?
Falls jemand eine Code-Stück hat, wo wichtigsten Matrizen unaufwändig übergeben werden, wär ich dankbar.

grüße

Vinz

EDIT: hab schon was gefunden:

http://www.swiftless.com/tutorials/opengl4/3-opengl-4-matrices.html

Autor:  TAK2004 [ Fr Jan 18, 2013 13:51 ]
Betreff des Beitrags:  Re: Tessellation-Shader unter OpenGL 3.2 zum laufen bringen

Die Matrizen wurden von OGL auf der CPU berechnet und ohne SSE, AVX, MME oder ähnliches extensions.
Das war also nicht nur langsam sondern auch noch ne menge unnötiger Code, weil man bei umfangreicheren Projekten die Matrizen sowieso im SceneGraph oder im zu rendernden Objekt braucht und verwendet.
Das wirkte mit der ab OGL 3 wesentlich flexibleren Shader Language einfach nicht richtig.
Man hatte fixed function Code drin, den man eventuell garnicht haben wollte oder hat Daten übergeben, die man nicht brauchte und ständig musste man die Daten zwischen eigenen Code und OGL synchronisieren.

Seite 1 von 1 Alle Zeiten sind UTC + 1 Stunde
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/