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

Aktuelle Zeit: Do Mär 28, 2024 20:11

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



Ein neues Thema erstellen Auf das Thema antworten  [ 52 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3, 4  Nächste
Autor Nachricht
 Betreff des Beitrags: Re: UnifomBlockObject
BeitragVerfasst: So Nov 08, 2015 17:02 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
OpenGL Debugging aktivieren oder Frame Debugger benutzen. Ansonsten kann man nur raten.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: UnifomBlockObject
BeitragVerfasst: So Nov 08, 2015 17:26 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Man sollte dazu sagen, dass OpenGL debugging wirklich so einfach ist wie das hier suggeriert wird. Alternativ einfach mit APITrace draufhauen. Das gibt bei einem Replay auch Fehlermeldungen aus, wenn was schief geht.

viele Grüße,
Horazont

_________________
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: UnifomBlockObject
BeitragVerfasst: So Nov 08, 2015 17:31 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 31, 2002 19:41
Beiträge: 1276
Wohnort: Bäretswil (Schweiz)
Programmiersprache: Pascal
Zitat:
Man sollte dazu sagen, dass OpenGL debugging wirklich so einfach ist wie das hier suggeriert wird.

Schön wäre es, wen es so einfach wäre.

Da hatte ich schon Probleme, den Debugger zum laufen zu bringen.
viewtopic.php?f=20&t=11451

_________________
OpenGL


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: UnifomBlockObject
BeitragVerfasst: So Nov 08, 2015 17:35 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
OpenGL Debugging zu Implementieren ist wirklich extrem simpel.

Hier gibt es dazu fertigen Delphi-Quellcode von mir : https://bitbucket.org/saschawillems/ope ... ?at=master

Dauert nur wenige Minuten, und wenn man ins ne eigene Klasse packt unendlich nützlich. Zwar nicht so schick wie die Validierungslayer der neuen APIs, aber sehr hilfreich um grade Problem wie von dir beschrieben zu finden. Die Zeit das ans Laufen zu bringen sollte man sich also nehmen.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: UnifomBlockObject
BeitragVerfasst: So Nov 08, 2015 17:42 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 31, 2002 19:41
Beiträge: 1276
Wohnort: Bäretswil (Schweiz)
Programmiersprache: Pascal
Dein Code sieht einfach aus, nur ist es mit FPC irgendwie nicht kompatibel.

Code:
  1. oglshader.pas(256,42) Error: Incompatible types: got "<address of procedure(LongWord;LongWord;LongWord;LongWord;LongInt;const PChar;Pointer);StdCall>" expected "<procedure variable type of procedure(LongWord;LongWord;LongWord;LongWord;LongInt;const PChar;Pointer);CDecl>"

_________________
OpenGL


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: UnifomBlockObject
BeitragVerfasst: So Nov 08, 2015 17:58 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
mathias hat geschrieben:
Dein Code sieht einfach aus, nur ist es mit FPC irgendwie nicht kompatibel.

Code:
  1. oglshader.pas(256,42) Error: Incompatible types: got "<address of procedure(LongWord;LongWord;LongWord;LongWord;LongInt;const PChar;Pointer);StdCall>" expected "<procedure variable type of procedure(LongWord;LongWord;LongWord;LongWord;LongInt;const PChar;Pointer);CDecl>"


Da steht doch sogar genau drin warum es nicht passt. Dein Callback nutzt eine andere Aufrufkonvention als erwartet. also einfach die passende Aufrufkonvention an deinen Callback anhängen.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: UnifomBlockObject
BeitragVerfasst: So Nov 08, 2015 18:19 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 31, 2002 19:41
Beiträge: 1276
Wohnort: Bäretswil (Schweiz)
Programmiersprache: Pascal
Ich habe stdcall durch cdecl ersetzt.
Jetzt startet mein Programm wie gewohnt, aber GLDebugCallBack wird nicht aufgerufen, obwohl mein Object Darstellungsfehler hat.

Ich habe diese beiden Zeilen,
Code:
  1.   glDebugMessageCallback(@GLDebugCallBack, nil);
  2.   glDebugMessageControl(GL_DONT_CARE, GL_DONT_CARE, GL_DONT_CARE, 0, nil, True);

bei der Shader-Laderoutine rein geschrieben.

Code:
  1.    .....
  2.     GL_DEBUG_SEVERITY_LOW: begin
  3.       MsgSeverity := 'LOW';
  4.     end;
  5.   end;
  6.  
  7.   LogForm.Add(Format('%s %s [%s] : %s', [MsgSource, MsgType, MsgSeverity, message_]));
  8.   LogForm.Show;
  9.   ShowMessage('hallo');  


Da müsste ja mindestens das ShowMessage kommen.

_________________
OpenGL


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: UnifomBlockObject
BeitragVerfasst: Mo Nov 09, 2015 10:15 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Hast du auch irgendwo glEnable(GL_DEBUG_OUTPUT);?

viele Grüße,
Horazont

_________________
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: UnifomBlockObject
BeitragVerfasst: Mo Nov 09, 2015 18:28 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 31, 2002 19:41
Beiträge: 1276
Wohnort: Bäretswil (Schweiz)
Programmiersprache: Pascal
Zitat:
Hast du auch irgendwo glEnable(GL_DEBUG_OUTPUT);?

Nein hatte ich nicht, jetzt klapptes.

Danke.


Ich habe ein einfaches Programm mit UBO gestartet, da habe ich folgende Ausgabe.
Die Initialisierung, des UBO ist mit der Classe weiter oben gemacht.
Beim ArrayBuffer motzt er auch irgendwas.
Die Meldung der Textur ist klar, die hat 6x6 Pixel.

Ich hoffe, das dies weiter hilft.

Code:
  1. API OTHER [] : Buffer detailed info: Buffer object 1 (bound to GL_UNIFORM_BUFFER_EXT, usage hint is GL_STATIC_DRAW) will use VIDEO memory as the source for buffer object operations.
  2. API OTHER [] : Buffer detailed info: Buffer object 2 (bound to GL_UNIFORM_BUFFER_EXT, usage hint is GL_STATIC_DRAW) will use VIDEO memory as the source for buffer object operations.
  3. API OTHER [] : Buffer detailed info: Buffer object 3 (bound to GL_ARRAY_BUFFER_ARB, usage hint is GL_STATIC_DRAW) will use VIDEO memory as the source for buffer object operations.
  4. API OTHER [] : Buffer detailed info: Buffer object 4 (bound to GL_ARRAY_BUFFER_ARB, usage hint is GL_STATIC_DRAW) will use VIDEO memory as the source for buffer object operations.
  5. API OTHER [] : Buffer detailed info: Buffer object 5 (bound to GL_ARRAY_BUFFER_ARB, usage hint is GL_STATIC_DRAW) will use VIDEO memory as the source for buffer object operations.
  6. API OTHER [] : Buffer detailed info: Buffer object 6 (bound to GL_ARRAY_BUFFER_ARB, usage hint is GL_STATIC_DRAW) will use VIDEO memory as the source for buffer object operations.
  7. API OTHER [] : Buffer detailed info: Buffer object 2 (bound to GL_UNIFORM_BUFFER (1), and GL_UNIFORM_BUFFER_EXT, usage hint is GL_DYNAMIC_DRAW) will use VIDEO memory as the source for buffer object operations.
  8. API OTHER [] : Buffer detailed info: Buffer object 2 (bound to GL_UNIFORM_BUFFER (1), and GL_UNIFORM_BUFFER_EXT, usage hint is GL_DYNAMIC_DRAW) will use VIDEO memory as the source for buffer object operations.
  9. API OTHER [] : Buffer detailed info: Buffer object 1 (bound to GL_UNIFORM_BUFFER (0), usage hint is GL_DYNAMIC_DRAW) will use VIDEO memory as the source for buffer object operations.
  10. API OTHER [] : Buffer detailed info: Buffer object 1 (bound to GL_UNIFORM_BUFFER (0), usage hint is GL_DYNAMIC_DRAW) will use VIDEO memory as the source for buffer object operations.
  11. API OTHER [LOW] : Texture state usage warning: Texture 0 is base level inconsistent. Check texture size.
  12. API OTHER [LOW] : Texture state usage warning: Texture 0 is base level inconsistent. Check texture size.
  13.  

_________________
OpenGL


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: UnifomBlockObject
BeitragVerfasst: Mo Nov 09, 2015 19:00 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
mathias hat geschrieben:
Code:
  1. API OTHER [] : Buffer detailed info: Buffer object 1 (bound to GL_UNIFORM_BUFFER_EXT, usage hint is GL_STATIC_DRAW) will use VIDEO memory as the source for buffer object operations.
  2. ...
  3.  


Ne, da wird nix angemeckert. Da du alle Meldung an hast bekommst du auch Hinweise und Info-Meldungen vom Treiber. Die Meldung sagt aus dass dein UBO im VRAM liegt, was ja auch zur Nutzung (GL_STATIC_DRAW) passt.

Von den Meldungen her passt also alles.

Evtl. überschreibst du also beim Hochladen der UBOs und Co. irgendwelche Daten oder hast was falsch gemappt?

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: UnifomBlockObject
BeitragVerfasst: Mo Nov 09, 2015 19:49 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 31, 2002 19:41
Beiträge: 1276
Wohnort: Bäretswil (Schweiz)
Programmiersprache: Pascal
Aber das sieht mir nach Fehler aus.
Das ist ein Ausschnitt, des OBJ-Loaders, als ich das Object mit den 800 Mesh ladete.
Code:
  1. API OTHER [] : Buffer detailed info: Buffer object 199 (bound to GL_UNIFORM_BUFFER_EXT, usage hint is GL_STATIC_DRAW) will use VIDEO memory as the source for buffer object operations.
  2. API OTHER [] : Buffer detailed info: Buffer object 198 (bound to GL_UNIFORM_BUFFER_EXT, usage hint is GL_STATIC_DRAW) will use VIDEO memory as the source for buffer object operations.
  3. API OTHER [] : Buffer detailed info: Buffer object 204 (bound to GL_UNIFORM_BUFFER_EXT, usage hint is GL_STATIC_DRAW) will use VIDEO memory as the source for buffer object operations.
  4. API OTHER [] : Buffer detailed info: Buffer object 203 (bound to GL_UNIFORM_BUFFER_EXT, usage hint is GL_STATIC_DRAW) will use VIDEO memory as the source for buffer object operations.
  5. API ERROR [HIGH] : GL_INVALID_VALUE error generated. Uniform block binding exceeds the maximum supported combined uniform buffer bindings.
  6. API ERROR [HIGH] : GL_INVALID_VALUE error generated. Uniform block binding exceeds the maximum supported combined uniform buffer bindings.
  7. API OTHER [] : Buffer detailed info: Buffer object 209 (bound to GL_UNIFORM_BUFFER_EXT, usage hint is GL_STATIC_DRAW) will use VIDEO memory as the source for buffer object operations.
  8. API ERROR [HIGH] : GL_INVALID_VALUE error generated. UBO buffer bindings
  9. API OTHER [] : Buffer detailed info: Buffer object 208 (bound to GL_UNIFORM_BUFFER_EXT, usage hint is GL_STATIC_DRAW) will use VIDEO memory as the source for buffer object operations.
  10. API ERROR [HIGH] : GL_INVALID_VALUE error generated. UBO buffer bindings
  11. API ERROR [HIGH] : GL_INVALID_VALUE error generated. UBO buffer bindings
  12. API ERROR [HIGH] : GL_INVALID_VALUE error generated. Uniform block binding exceeds the maximum supported combined uniform buffer bindings.
  13. API ERROR [HIGH] : GL_INVALID_VALUE error generated. Uniform block binding exceeds the maximum supported combined uniform buffer bindings.
  14. API OTHER [] : Buffer detailed info: Buffer object 214 (bound to GL_UNIFORM_BUFFER_EXT, usage hint is GL_STATIC_DRAW) will use VIDEO memory as the source for buffer object operations.
  15. API ERROR [HIGH] : GL_INVALID_VALUE error generated. UBO buffer bindings
  16. API OTHER [] : Buffer detailed info: Buffer object 213 (bound to GL_UNIFORM_BUFFER_EXT, usage hint is GL_STATIC_DRAW) will use VIDEO memory as the source for buffer object operations.
  17. API ERROR [HIGH] : GL_INVALID_VALUE error generated. UBO buffer bindings
  18. API ERROR [HIGH] : GL_INVALID_VALUE error generated. UBO buffer bindings
  19. API ERROR [HIGH] : GL_INVALID_VALUE error generated. Uniform block binding exceeds the maximum supported combined uniform buffer bindings.
  20. API ERROR [HIGH] : GL_INVALID_VALUE error generated. Uniform block binding exceeds the maximum supported combined uniform buffer bindings.
  21. API OTHER [] : Buffer detailed info: Buffer object 219 (bound to GL_UNIFORM_BUFFER_EXT, usage hint is GL_STATIC_DRAW) will use VIDEO memory as the source for buffer object operations.
  22. API ERROR [HIGH] : GL_INVALID_VALUE error generated. UBO buffer bindings
  23. API OTHER [] : Buffer detailed info: Buffer object 218 (bound to GL_UNIFORM_BUFFER_EXT, usage hint is GL_STATIC_DRAW) will use VIDEO memory as the source for buffer object operations.
  24. API ERROR [HIGH] : GL_INVALID_VALUE error generated. UBO buffer bindings
  25. API ERROR [HIGH] : GL_INVALID_VALUE error generated. UBO buffer bindings
  26. API ERROR [HIGH] : GL_INVALID_VALUE error generated. Uniform block binding exceeds the maximum supported combined uniform buffer bindings. 
  27. ...
  28. API PERFORMANCE [MEDIUM] : Program/shader state performance warning: Fragment Shader is going to be recompiled because the shader key based on GL state mismatches.
  29. API PERFORMANCE [MEDIUM] : Program/shader state performance warning: Fragment Shader is going to be recompiled because the shader key based on GL state mismatches.
  30. API PERFORMANCE [MEDIUM] : Program/shader state performance warning: Fragment Shader is going to be recompiled because the shader key based on GL state mismatches.
  31. API PERFORMANCE [MEDIUM] : Program/shader state performance warning: Fragment Shader is going to be recompiled because the shader key based on GL state mismatches.
  32. API PERFORMANCE [MEDIUM] : Program/shader state performance warning: Fragment Shader is going to be recompiled because the shader key based on GL state mismatches

_________________
OpenGL


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: UnifomBlockObject
BeitragVerfasst: Mo Nov 09, 2015 20:16 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
mathias hat geschrieben:
Code:
  1. API ERROR [HIGH] : GL_INVALID_VALUE error generated. Uniform block binding exceeds the maximum supported combined uniform buffer bindings.

Ja, das ist ein Fehler. Du liegst über der Anzahl an maximal möglichen Uniform Block Bindings. Wie viele verwendest du denn simultan?

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: UnifomBlockObject
BeitragVerfasst: Mo Nov 09, 2015 20:40 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 31, 2002 19:41
Beiträge: 1276
Wohnort: Bäretswil (Schweiz)
Programmiersprache: Pascal
Ca. 800 Stück.

_________________
OpenGL


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: UnifomBlockObject
BeitragVerfasst: Mo Nov 09, 2015 20:41 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Aber doch nicht simultan? Also alle gleichzeitig aktiv?

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: UnifomBlockObject
BeitragVerfasst: Mo Nov 09, 2015 22:16 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 31, 2002 19:41
Beiträge: 1276
Wohnort: Bäretswil (Schweiz)
Programmiersprache: Pascal
Pro Shader habe ich 2, wen du dies meinst ?

Muss man den Buffer nach der Daten-Übergabe irgendwie entbinden ?

_________________
OpenGL


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 52 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3, 4  Nächste
Foren-Übersicht » Programmierung » Shader


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 8 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.117s | 17 Queries | GZIP : On ]