DGL
https://delphigl.com/forum/

Nichts funktioniert bei Shadern
https://delphigl.com/forum/viewtopic.php?f=20&t=10079
Seite 1 von 1

Autor:  Ida [ Sa Sep 24, 2011 16:31 ]
Betreff des Beitrags:  Nichts funktioniert bei Shadern

Hallo liebe Community,
Ich hab mir heute zum ersten Mal das Thema Shader vorgenommen, und ich muss sagen:
PROBLEME, PROBLEME, PROBLEME!

Ich hab mich fein säuberlich an das GLSL Tutorial gehalten, aber es stimmt trotzdem hinten und vorne nichts.
Zuerst mal die Compiler-Fehler. Die Tutorial-Funktion die mir das Info-Log beim Shader-Kompilieren ausgeben soll schmiss anfangs nur chinesische Meldungen raus!
Bild

Ich hab mich anschließend etwas darin gespielt und endlich was lesbares bekommen, nur ich glaub diese Fehlermeldung
stimmt genausowenig wie die anderen, weil die kommt IMMER, egal was ich in den shader-source schreibe, selbst wenn er leer ist.
Bild

Ich schätze hier ist das Log entweder nicht vollständig oder sonst irgendwie fehlerhaft. Ich hab keine Ahnung wo da der Fehler liegen kann.
Es scheint auch als ob er keinen einzigen shader kompilieren kann. Wenn ich nach Errors beim Shader-Objekt frage das die fertig-kompilierten
Fragment und Vertex Shader enthält kommt nur eine leere Fehlermeldung

Hier mal meine Error-Funktion:

Code:
  1. function GetError(pshader: GLHandleARB): String;
  2. var
  3.   blen, slen: GLInt;
  4.   InfoLog: PGLCharARB;
  5. begin
  6.   glGetObjectParameterivARB(pshader, GL_OBJECT_INFO_LOG_LENGTH_ARB, @blen);
  7.   if blen > 1 then
  8.   begin
  9.     GetMem(InfoLog, blen * SizeOf(GLCharARB));
  10.     glGetInfoLogARB(pshader, blen, slen, InfoLog);
  11.     Result := PChar(InfoLog);
  12.     Dispose(InfoLog);
  13.   end;
  14. end;


Wenn ich hier in der vorletzten Zeile auf "Result:=InfoLog;" stelle (ohne PChar) kommt die nicht-chinesische Meldung.
Ich hab dann mal in der Möglichkeit das er die shader doch vieleicht kompiliert hat, und doch vielleicht alles richtig laufen könnte
versucht den shader anzuwenden, aber nix da. Null Ergebnis.
Ich hoffe ihr habt Lösungen für diese Probleme, weil ich blick da nicht durch, besonders frustrierend ist es wenn ich sehe wie alle anderen
fröhlich mit funktionierenden Shadern dahinprogrammieren und tolle Ergebnisse erzielen.
Bild

Danke im Vorraus für alle Hilfeleistenden:
lg, Ida

Autor:  mrtrain [ Sa Sep 24, 2011 17:46 ]
Betreff des Beitrags:  Re: Nichts funktioniert bei Shadern

Also deine chinesischen Meldungen sind vermutlich darauf zurückzuführen, dass die Stringklasse mit 16 bit/Zeichen arbeitet und nicht, wie du mit 8. Wobei ich dann erwartet hätte, dass es mit der expliziten Umwandlung zu pchar funktioniert.

Zu deiner Fehlermeldung mit dem EOF: Könnte es sein, dass am Anfang deines Shaderquelltextes ein paar Bytes zur Kennzeichnung der Kodierung sind? Siehe hier. Ansonsten gehe mal die Checkliste Shader durch.

Autor:  Ida [ Sa Sep 24, 2011 18:53 ]
Betreff des Beitrags:  Re: Nichts funktioniert bei Shadern

Also ich hab bisher den code aus einer textdatei in eine TStringlist geladen, und dann den Text direkt mit einer String-Variable übergeben.
Ich hab da jetzt ewig rumgespielt und...tja...immer noch nicht weiter. Wenn ich dem Shader direkt die TStringlist anstatt dem enthaltenen Text als String übergebe kommt eine neue Fehlermeldung(rechts), und wenn der code gar nicht erst aus einer Datei geladen wird sondern ich den direkt aus einem Memo-Feld übergebe kommt auch ne neue Meldung^^ (links)
Bild

Nein mal ehrlich, ich hab mir gerade das Beispielprojekt aus GLSL-Tutorial 2 runtergeladen, da wird im Source auch direkt aus einer Textdatei geladen und alles klappt wie am Schnürchen.
und die checkliste bin ich auch schon davor durchgegangen. :?

Zitat:
Könnte es sein, dass am Anfang deines Shaderquelltextes ein paar Bytes zur Kennzeichnung der Kodierung sind?

Wenn ja, wie find ich das raus und wie kann ich sowas vermeiden. Ich hab mal eben den Quelltext in UTF8-Codierung gespeichert anstatt ansi, aber da ist kein Unterschied beim Kompilieren.
Irgendwo ist da der Hund drin und ich find ihn nicht, das gibts doch nicht. Bild

Autor:  SDH.Prod [ Sa Sep 24, 2011 19:05 ]
Betreff des Beitrags:  Re: Nichts funktioniert bei Shadern

Du kannst die Textdatei auch direkt laden.

Anstatt das du eine TStringList verwendest kannste auch einfach die Daten direkt übergeben. ---> TStream (wenn du SDL verwendest kannste auch SDL_RWOPS nutzen). Du lädst also einfach die "binären Daten" anstatt "Text" und schickst die an OpenGL.

Autor:  Lord Horazont [ Sa Sep 24, 2011 19:57 ]
Betreff des Beitrags:  Re: Nichts funktioniert bei Shadern

Der Code zum laden des Shaders wäre extrem aufschlussreich…

greetings

Autor:  Jens01 [ Sa Sep 24, 2011 21:52 ]
Betreff des Beitrags:  Re: Nichts funktioniert bei Shadern

http://www.delphigl.com/forum/viewtopic.php?f=20&t=8497&hilit=shader&start=15
Vor einiger Zeit habe ich mich da auch durchgequält. Diese Zeichen haben meist etwas mit string <-> Ansistring zu tun.
Im letzten Beitrag des oberen Links habe ich mir mal so eine ShaderClasse gemacht. Vielleicht findest Du ja darin Hilfe.
Gruss Jens

Autor:  Ida [ Sa Sep 24, 2011 23:24 ]
Betreff des Beitrags:  Re: Nichts funktioniert bei Shadern

@Jens01:

Bild

Danke danke danke für den Tipp mit dieser Shaderklasse, das hat alle meine Probleme gelöst!

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