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

Aktuelle Zeit: Sa Mai 25, 2024 20:37

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



Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Mi Jan 16, 2013 16:48 
Offline
DGL Member

Registriert: Fr Mai 11, 2012 13:25
Beiträge: 229
Programmiersprache: c++, c, JavaScript
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:

_________________
"Pixel, ich bin dein Vater."
-Darf Shader


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Jan 16, 2013 20:19 
Offline
DGL Member

Registriert: Fr Mai 11, 2012 13:25
Beiträge: 229
Programmiersprache: c++, c, JavaScript
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...

_________________
"Pixel, ich bin dein Vater."
-Darf Shader


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Jan 16, 2013 22:38 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
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

_________________
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  
BeitragVerfasst: Mi Jan 16, 2013 23:06 
Offline
DGL Member

Registriert: Fr Mai 11, 2012 13:25
Beiträge: 229
Programmiersprache: c++, c, JavaScript
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.

_________________
"Pixel, ich bin dein Vater."
-Darf Shader


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Jan 16, 2013 23:27 
Offline
DGL Member

Registriert: Fr Mai 11, 2012 13:25
Beiträge: 229
Programmiersprache: c++, c, JavaScript
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?

_________________
"Pixel, ich bin dein Vater."
-Darf Shader


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Jan 17, 2013 09:35 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2622
Wohnort: Berlin
Programmiersprache: Go, C/C++
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.

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Fr Jan 18, 2013 12:46 
Offline
DGL Member

Registriert: Fr Mai 11, 2012 13:25
Beiträge: 229
Programmiersprache: c++, c, JavaScript
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

_________________
"Pixel, ich bin dein Vater."
-Darf Shader


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Fr Jan 18, 2013 13:51 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2622
Wohnort: Berlin
Programmiersprache: Go, C/C++
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.

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 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:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.009s | 14 Queries | GZIP : On ]