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

Aktuelle Zeit: So Jul 20, 2025 18:42

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



Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Shader-Fehler: EOF
BeitragVerfasst: So Dez 16, 2012 11:36 
Offline
Compliance Officer
Benutzeravatar

Registriert: So Aug 08, 2010 08:37
Beiträge: 460
Programmiersprache: C / C++ / Lua
Zitat:
(0) : error C0000: syntax error, unexpected $end at token "<EOF>"


Diesen Fehler habe ich mit diesem Code unter SDL bekommen: (natürlich unter Delphi)

Code:
  1.  
  2.  
  3.     ProgramObject := glCreateProgram;
  4.     sl := TStringList.Create;
  5.  
  6.     //Vertex Shader (ppl)
  7.     VS := glCreateShader(GL_VERTEX_SHADER);
  8.     sl.LoadFromFile('..\data\shadertest\easytl.vs');
  9.     str := sl.Text;
  10.     strlen := Length(sl.Text);
  11.     glShaderSource(ProgramObject,1,PPGLChar(str),@strlen);
  12.     glCompileShader(VS);
  13.     {$IFDEF DEBUG}
  14.       if IsConsole then
  15.       begin
  16.         WriteLn(glGetShaderLog(VS));
  17.         WriteLn(sl.Text);
  18.       end;
  19.     {$ENDIF}
  20.     glAttachShader(ProgramObject,VS);
  21.     glDeleteShader(VS);
  22.     //Fragment Shader (ppl)
  23.     FS := glCreateShader(GL_FRAGMENT_SHADER);
  24.     sl.LoadFromFile('..\data\shadertest\easytl.fs');
  25.     str := sl.Text;
  26.     strlen := Length(sl.Text);
  27.     glShaderSource(ProgramObject,1,PPGLChar(str),@strlen);
  28.     glCompileShader(FS);
  29.     {$IFDEF DEBUG}
  30.       if IsConsole then
  31.       begin
  32.         WriteLn(glGetShaderLog(FS));
  33.         WriteLn(sl.Text);
  34.       end;
  35.     {$ENDIF}
  36.     glAttachShader(ProgramObject,FS);
  37.     glDeleteShader(FS);
  38.  
  39.     glLinkProgram(ProgramObject);
  40.  
  41.  


Sowohl beim VS als auch beim FS.

Die Shader sind einfach und sollten keine Fehler verursachen:

VS:
Code:
  1.  
  2.  
  3. void main(void)
  4. {
  5.   gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
  6.   gl_FrontColor = gl_Color;
  7. }
  8.  
  9.  


FS:
Code:
  1.  
  2.  
  3. void main(void)
  4. {
  5.  gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);
  6. }
  7.  
  8.  


Ich kann es mir nicht erklären...

_________________
offizieller DGL Compliance Beauftragter
Never run a changing system! (oder so)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Shader-Fehler: EOF
BeitragVerfasst: So Dez 16, 2012 12:36 
Offline
DGL Member
Benutzeravatar

Registriert: Di Okt 03, 2006 14:07
Beiträge: 1277
Wohnort: Wien
Hi,
ich zeige Dir hier den ersten Teil meiner zufriedenstellend arbeitenden Funktion "gsGenShader", das ist zwar FreePascal, aber im Delphi-Modus:

Code:
  1. Function gsGenShader(AProgramType: TProgramType;
  2.                    AText: TStringList;
  3.                    AProgram: LongWord;
  4.                    Var ShaderError: AnsiString): LongWord;
  5.  
  6. Var
  7.    LocalShader: LongWord;
  8.    LocalText: AnsiString;
  9.    TextSize: LongInt;
  10. Begin
  11.    Case AProgramType Of
  12.         prgVertex: LocalShader:= glCreateShader(GL_VERTEX_SHADER);
  13.       prgFragment: LocalShader:= glCreateShader(GL_FRAGMENT_SHADER);
  14.    End;
  15.  
  16.    LocalText:= AText.Text;
  17.    TextSize:= Length(LocalText);
  18.    glShaderSource(LocalShader,1,@LocalText,@TextSize);
  19.  


Zu beachten ist, dass das Shader-Programm ein Ansistring sein muss - und nicht etwa ein WideString. Und das "PPGLChar" kommt mir auch ziemlich verdächtig vor.

Liebe Grüße
Traude


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Shader-Fehler: EOF
BeitragVerfasst: So Dez 16, 2012 14:08 
Offline
Compliance Officer
Benutzeravatar

Registriert: So Aug 08, 2010 08:37
Beiträge: 460
Programmiersprache: C / C++ / Lua
Funktioniert (unter Delphi) auch nicht, den Code hatte ich auch schon probiert, oberes ist beim rumprobieren entstanden ^^.

EDIT:

der Shader zeigt bei meiner Integrierten Grafik keine Fehler, allerdings funktionieren tut er auch nicht :(

_________________
offizieller DGL Compliance Beauftragter
Never run a changing system! (oder so)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Shader-Fehler: EOF
BeitragVerfasst: So Dez 16, 2012 17:49 
Offline
DGL Member
Benutzeravatar

Registriert: Di Okt 03, 2006 14:07
Beiträge: 1277
Wohnort: Wien
Meine obige Version funktioniert immer, in OpenGL 2.1 und OpenGL 3.3, sowohl in Ubuntu als auch in Windows7.

Daher liegt der Fehler vielleicht ganz woanders. Bist Du sicher, dass Du einen gültigen Rendering Context hast?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Shader-Fehler: EOF
BeitragVerfasst: So Dez 16, 2012 18:16 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 18:56
Beiträge: 1213
Programmiersprache: Delphi/FPC
Hey,

wenn kein Context vorhanden ist müsste es eig schon bei glCreateProgram einen Fehler geben. Ich vermute eher, das der Quelltext irgendwie falsch formatiert ist. Mit was hast du den Code geschrieben? Lass dir beim Texteditor mal die nicht druckbaren Zeichen anzeigen und guck mal ob es da irgendwelche Auffälligkeiten gibt. Weiterhin solltest du nachsehen, ob die Datein mit ASCII-Kodierung gespeichert sind.

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: Shader-Fehler: EOF
BeitragVerfasst: Mo Dez 17, 2012 07:22 
Offline
Compliance Officer
Benutzeravatar

Registriert: So Aug 08, 2010 08:37
Beiträge: 460
Programmiersprache: C / C++ / Lua
Ich habe ihn mit dem Notepad geschrieben, an der Formatierung kanns nicht liegen.

Was ich gelesen habe, dass ein Problem mit den NVIDIA-Treibern ist. Die ARB funktioniert bei mir einwandfrei :/

(Graka hat OpenGL 4.3)

_________________
offizieller DGL Compliance Beauftragter
Never run a changing system! (oder so)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Shader-Fehler: EOF
BeitragVerfasst: Mo Dez 17, 2012 11:50 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2623
Wohnort: Berlin
Programmiersprache: Go, C/C++
Wenn selbst der einfachste Shader Code Probs macht, dann sollte man mal gucken ob es neue Treiber für die Graka gibt.
Dann würde ich die möglichsten Kandidaten aus schliessen.
Mein größter Kandidat ist die StringList, wo ich vermute, dass er die 2 leeren Zeilen vom Shader garnicht übernimmt und im string auch dann nicht mit rein wandern. Denn ein GLSlang Shader muss immer eine leere Zeile am Ende haben.
Also würde ich mal ein Breakpoint nach str:=sl.Text; setzen und mal rein gucken, was in str steht.

_________________
"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  
 Betreff des Beitrags: Re: Shader-Fehler: EOF
BeitragVerfasst: Mo Dez 17, 2012 19:27 
Offline
Compliance Officer
Benutzeravatar

Registriert: So Aug 08, 2010 08:37
Beiträge: 460
Programmiersprache: C / C++ / Lua
nope, fehler:

Code:
  1. glShaderSource(PROGRAMOBJECT,...);


statt


Code:
  1. glShaderSource(SHADEROBJECT,...);


trotzdem natürlich danke an alle Antworten ;)

P.S.

Bzg. des Treibers, dieser Fehler war nur in einer der 1XX-Version vorhanden :/ also schon lange nicht mehr aktuell.

_________________
offizieller DGL Compliance Beauftragter
Never run a changing system! (oder so)


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 9 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.008s | 16 Queries | GZIP : On ]