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

Aktuelle Zeit: Di Jun 04, 2024 07:47

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



Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Nichts funktioniert bei Shadern
BeitragVerfasst: Sa Sep 24, 2011 16:31 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Apr 13, 2011 22:05
Beiträge: 218
Programmiersprache: Lazarus/FPC
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

_________________
Ich teile manchmal heimlich durch Null. - Alber Einstein


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Nichts funktioniert bei Shadern
BeitragVerfasst: Sa Sep 24, 2011 17:46 
Offline
DGL Member

Registriert: Di Okt 13, 2009 17:25
Beiträge: 365
Programmiersprache: C++
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.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Nichts funktioniert bei Shadern
BeitragVerfasst: Sa Sep 24, 2011 18:53 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Apr 13, 2011 22:05
Beiträge: 218
Programmiersprache: Lazarus/FPC
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

_________________
Ich teile manchmal heimlich durch Null. - Alber Einstein


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Nichts funktioniert bei Shadern
BeitragVerfasst: Sa Sep 24, 2011 19:05 
Offline
DGL Member

Registriert: Sa Okt 18, 2008 11:59
Beiträge: 180
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.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Nichts funktioniert bei Shadern
BeitragVerfasst: Sa Sep 24, 2011 19:57 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Der Code zum laden des Shaders wäre extrem aufschlussreich…

greetings

_________________
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: Nichts funktioniert bei Shadern
BeitragVerfasst: Sa Sep 24, 2011 21:52 
Offline
DGL Member

Registriert: Mo Nov 09, 2009 12:01
Beiträge: 200
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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Nichts funktioniert bei Shadern
BeitragVerfasst: Sa Sep 24, 2011 23:24 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Apr 13, 2011 22:05
Beiträge: 218
Programmiersprache: Lazarus/FPC
@Jens01:

Bild

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

_________________
Ich teile manchmal heimlich durch Null. - Alber Einstein


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 12 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 ]