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

Aktuelle Zeit: Do Mär 28, 2024 13:12

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



Ein neues Thema erstellen Auf das Thema antworten  [ 10 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: glBufferData( GL_TEXTURE_BUFFER,
BeitragVerfasst: So Mai 21, 2017 19:16 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 31, 2002 19:41
Beiträge: 1276
Wohnort: Bäretswil (Schweiz)
Programmiersprache: Pascal
Wann werden Texturen mit
Code:
  1. glBufferData( GL_TEXTURE_BUFFER ,...
  2. // und
  3. glBufferSubData( GL_TEXTURE_BUFFER ,...

geladen ?

Im Normalfall werden sie mit
Code:
  1. glBindTexture(GL_TEXTURE_2D, FID);
  2. glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB8, w, h, 0, GL_RGB, GL_UNSIGNED_BYTE_3_3_2, @Dat);

geladen,

_________________
OpenGL


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: glBufferData( GL_TEXTURE_BUFFER,
BeitragVerfasst: Mo Mai 22, 2017 18:56 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Das sind auch zwei total unterschiedliche Dinge. mit einem Texture Buffer Objekt kann man in einem Shader auf einen großen Speicherbereich im VRAM zugreifen, ungefiltert (via textelFetch) und nur ein-dimensional.

Heute nutzt man aber eher SSBOs für solche Datenzugriffe, die sind was die Datenstrukturen angeht flexibler.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: glBufferData( GL_TEXTURE_BUFFER,
BeitragVerfasst: Mo Mai 22, 2017 21:25 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 31, 2002 19:41
Beiträge: 1276
Wohnort: Bäretswil (Schweiz)
Programmiersprache: Pascal
Zitat:
Heute nutzt man aber eher SSBOs für solche Datenzugriffe

Ist dies etwas ähnliches wie UBO ?

_________________
OpenGL


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: glBufferData( GL_TEXTURE_BUFFER,
BeitragVerfasst: Mo Mai 22, 2017 21:38 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Nein, sind zwar beides Buffer Objekte, aber SSBO und UBO bilden unterschiedliche Teile der Hardware ab. SSBOs kann man (vereinfacht) als globalen Speicher sehen, und erlauben den (relativ) freien Zugriff auf große Speicherbereiche (min. 16 MByte, i.d.r. aber viel größer, man kann z.B. in einem Compute Shader direkt in ein SSBO schreiben). Daten eines UBOs landen i.d.R. irgendwo in einem Register und können somit von der GPU schneller zugegriffen werden. Die sind dann in der größe i.d.R. eingeschränkt (auf NV afair 64 KByte damit die immer komplett in die Register passen). Kann man sich ein wenig wie heap und stack vorstellen, wobei das natürlich je nach GPU-Design unterschiedlich ist und es z.B. zwischen AMD und NV grundlegende Unterschiede gibt.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: glBufferData( GL_TEXTURE_BUFFER,
BeitragVerfasst: Mo Mai 22, 2017 21:44 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 31, 2002 19:41
Beiträge: 1276
Wohnort: Bäretswil (Schweiz)
Programmiersprache: Pascal
Dann ist dies so etwas ähnliches, so wie man unter DOS direkt auf das VRAM zugreifen konnte ?

_________________
OpenGL


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: glBufferData( GL_TEXTURE_BUFFER,
BeitragVerfasst: Di Mai 23, 2017 06:46 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Nein, einen direkten Zugriff auf den VRAM bietet ein SSBO auch nicht. Das wäre sicherheitstechnisch auch zu kritisch.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: glBufferData( GL_TEXTURE_BUFFER,
BeitragVerfasst: Di Mai 23, 2017 17:05 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 31, 2002 19:41
Beiträge: 1276
Wohnort: Bäretswil (Schweiz)
Programmiersprache: Pascal
Zitat:
Nein, einen direkten Zugriff auf den VRAM bietet ein SSBO auch nicht. Das wäre sicherheitstechnisch auch zu kritisch.

Dies stimmt auch wieder.

Für was sind diese Puffer TBO und SSBO sinnvoll ?
Weis du eine Anwendung, wo man diese brauchen könnte ?

_________________
OpenGL


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: glBufferData( GL_TEXTURE_BUFFER,
BeitragVerfasst: Di Mai 23, 2017 18:08 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
In modernem OpenGL und v.a Vulkan arbeitet man nur noch mit Buffer Objekten, v.a. SSBO und UBO, TBO nutzt man eigentlich eher selten. VBO und IBO nutzt man ja sowieso. SSBOs werden oft zusammen mit compute Shadern benutzt, die sowohl aus dem SSBO lesen und auch in das SSBO schreiben können. Damit kann man z.B. GPU-basierende Partikelsysteme umsetzen. Mache ich u.a. in meinen Vulkan-Demos, da gibt es u.a. auch eins für eine N-Body Simulation via Compute Shader bei der die Partikeldaten im SSBO liefen.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: glBufferData( GL_TEXTURE_BUFFER,
BeitragVerfasst: Di Mai 23, 2017 18:56 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 31, 2002 19:41
Beiträge: 1276
Wohnort: Bäretswil (Schweiz)
Programmiersprache: Pascal
Zitat:
In modernem OpenGL und v.a Vulkan arbeitet man nur noch mit Buffer Objekten,

Das hat du recht, auch mit OpenGL 3.3 läuft vieles über Puffer, die wichtigsten sind VBO und VBA.
Die Unifom-Variablen kann man auch mit eine Puffer übergeben (UBO).
Und natürlich die Texturen, wobei die schon seit dem ersten OpenGL über einen Puffer gingen.

Wen man Tutorial mal abgeschlossen ist, würde es sich sicher mal lohnen Vulkan genauer anzugucken.
Seit ich am Tutorial arbeite, sind bei mir auch schon wieder Fragen aufgekommen. :wink:

ZB. glBufferSubData(....

_________________
OpenGL


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: glBufferData( GL_TEXTURE_BUFFER,
BeitragVerfasst: Di Mai 23, 2017 20:12 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Aug 14, 2013 21:17
Beiträge: 587
Programmiersprache: C++
mathias hat geschrieben:
Zitat:
In modernem OpenGL und v.a Vulkan arbeitet man nur noch mit Buffer Objekten,

Das hat du recht, auch mit OpenGL 3.3 läuft vieles über Puffer
Ich denke nicht, dass Sascha sich auf OpenGL 3.3 bezieht, wenn er von "modernem OpenGL" redet. Da gibt es ja noch gar keine SSBOs.

mathias hat geschrieben:
Und natürlich die Texturen, wobei die schon seit dem ersten OpenGL über einen Puffer gingen.
Nein. Texturen in OpenGL sind keine Buffer Objects, sondern eine eigene Art von OpenGL Objekt, die auf Bilddaten spezialisiert ist. Filterung, Kompression, Mipmapping – alles Dinge, die du bei Buffer Objects (also auch bei TBOs) nicht angeben kannst.

_________________
So aktivierst du Syntaxhighlighting im Forum: [code=pascal ][/code], [code=cpp ][/code], [code=java ][/code] oder [code=glsl ][/code] (ohne die Leerzeichen)


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


Wer ist online?

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