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

Aktuelle Zeit: Fr Aug 17, 2018 06:56

Foren-Übersicht » Sonstiges » Community-Projekte
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 37 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Mo Aug 11, 2008 08:44 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
glBindBuffer gehört zu VertexBufferObjects und das kann man als Erweiterung zu VertexArrays sehen. VertexArrays halten ihre Daten nur Lokal im Speicher der Anwendung wärend VertexBufferObjects die Daten meistens im Speicher der Grafikkarte ablegen. Außer der Treiber kappselt es intern. Bei großen Datenmengen würde man dann einen wirklich markanten Unterschied feststellen. Der Grafikspeicher ist halt schneller und über einen größeren Bus angeschlossen. VertexBufferObjects werden normal auch Asynchron gezeichnet. Was bei VertexArrays große Risiken birgt.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Aug 11, 2008 09:00 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7714
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Das sollte man unter der Überschrift "Unterschiede zu VertexBufferArrays (VBO)" mal festhalten. 8)

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Aug 11, 2008 09:48 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Genau genommen würde ich persönlich sogar sagen, dass VertexArrays nur noch als Fallback dienen sollten, wenn VertexBufferObjects nicht unterstützt werden. Bzw. wenn es sich um wirklich sehr sehr kleine Datenmengen handelt. Denn da kann das Bindes eines Buffers auch länger dauern als das direkte Zeichnen. Wobei es sich dann vermutlich eher lohnt den Code so umzustellen, dass man nicht das ganze VertexBufferObject zeichnet sondern nur kurze Ausschnitte davon. Dann muss man ständig die Buffer wechseln. Evtl sollte man da einen Hinweis unterbringen, dass man wenn möglich zu VertexBufferObjects greift.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Aug 11, 2008 11:11 
Offline
DGL Member
Benutzeravatar

Registriert: Di Jul 29, 2003 00:11
Beiträge: 436
Könntest du das einbauen? Ich hab die leider noch nie angefasst, da ich erst seit kurzem ein Rechner habe, der das auch kann. ;)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Aug 11, 2008 14:26 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Also ein Tutorial zu VertexBufferObjects gibt es bereits. Von daher braucht man das nicht doppelt. Aber ich denke ich schau mal wann ich in der Lage bin einen Hinweis einzufügen. ;)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Aug 11, 2008 14:51 
Offline
DGL Member
Benutzeravatar

Registriert: Di Jul 29, 2003 00:11
Beiträge: 436
Hab ein Hinweis zu dem Tutorial eingefügt und warum man lieber VBOs nehmen sollte. :)

Aber: Was ist der Vorteil von VBOs gegenüber einem Vertexarray in einer Displayliste? Kann man die Vertices beim VBO noch ändern, wenn sie zu der Graka geschickt sind?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Aug 11, 2008 15:48 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Also, wenn du mit glBegin und glEnd innerhalb einer DisplayListe arbeitest werden auf aktuellen Karten auch VBOs benutzt. Ich denke das Gleiche wäre auch bei VertexArrays der Fall. Deswegen sind DisplayListen teilweise auch so schnell. Weil sie in Wirklichkeit VBOs benutzen.

Der Vorteil bei VBOs liegt unter anderem darin, dass du zum Beispiel ein Model (Vertexdaten) hast und dann 1-3 Indexbuffer. Je nachdem wie weit das Objekt entfernt ist könnte man einen anderen Index mit weniger oder mehr Einträgen benutzen (Level of Detail). Außerdem kannst du Teilbereiche neu übertragen oder eben als WRITE_ONLY mappen und neu befüllen (vertex streaming). Du kannst auch einen 10 MB großen Buffer erstellen und dann verschiedene Objekte rein packen und sie dann zeichnen ohne den Buffer neu binden zu müssen. Du kannst wie beim VertexArray auch verschiedene Elemente erstellen (zum Beispiel 2x TexCoords) und dann benutzt du entweder die TexCoords 1 oder 2. Oder beide etc. Also alles in allem sehr flexibel. Außerdem gibt es ein recht neues Target um die Daten in eine Textur zu schreiben oder zu lesen (Streaming von Texturen).

Und falls OpenGL 3.0 irgendwann mal erscheinen sollte sind VBOs die einzige Möglichkeit mit VertexDaten zu arbeiten.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 37 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3
Foren-Übersicht » Sonstiges » Community-Projekte


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 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.050s | 15 Queries | GZIP : On ]