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

Aktuelle Zeit: Fr Jul 18, 2025 15:52

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



Ein neues Thema erstellen Auf das Thema antworten  [ 11 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Sa Aug 05, 2006 16:50 
Offline
DGL Member

Registriert: Di Jun 13, 2006 08:11
Beiträge: 30
Hallo,

ich überlege aus Performancegründen von Displaylisten auf
VBO's umzusteigen. Da ich sehr viele Dreiecke habe,
denke ich macht das Sinn. Kann mir noch einer ein paar
Vor und auch Nachteile der einzelnen Verfahren nennen, oder
eine gute Informationsseite?

Man übergibt einem VBO ja ein Vertexarray. Wie muss
das Array aufgebaut sein? Wenn man Dreiecke haben will
muss man das Array so sortieren, das die ersten drei Werte
ein Dreieck sind und das 4 bis 6 wieder eins etc ...
Stimmt das?

Danke schonmal!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Aug 05, 2006 17:12 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Mai 29, 2006 21:13
Beiträge: 142
Wohnort: Ballenstedt/Sachsen-Anhalt
Guckstu hier:
http://wiki.delphigl.com/index.php/Tuto ... fferobject

sollte fast alle Fragen klären :P

Gruß,
Martok

_________________
Gott sei Dank bin ich Atheist!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Aug 05, 2006 17:35 
Offline
DGL Member

Registriert: Di Jun 13, 2006 08:11
Beiträge: 30
:) danke, hab ich mir grad auch noch durchgelesen :)

Aber wenn ich kein Umweg über den Hauptspeicher machen
will, das hab ich noch nicht ganz verstanden, hast du da noch
ein Dokument? oder Seite?

Ach so, und an welcher Stelle sagt man wie das Array
mit den Vertices aufgebaut ist?

Hatte auch gelesen, das wenn eine Grafikkarte VBO's unterstützt,
es kein Unterschied macht, VBO's oder DL's zu nehmen, ist das
wahr? Weil dann versteh ich nicht den Vorteil von VBO's wenn man
eine sich nicht ändernde szene hat..

Danke


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Aug 05, 2006 17:51 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Mai 29, 2006 21:13
Beiträge: 142
Wohnort: Ballenstedt/Sachsen-Anhalt
blender123 hat geschrieben:
Ach so, und an welcher Stelle sagt man wie das Array
mit den Vertices aufgebaut ist?

glInterleavedArrays(GL_T2F_V3F, SizeOf(TVertex), nil);
heißt es gibt 2Texturkoordinaten als Float und 3VertexKoordinaten als Float, das ganze wird so groß wie TVertex ist.

Zum Rest kann ich keine Angaben machen ;)

_________________
Gott sei Dank bin ich Atheist!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Aug 05, 2006 17:57 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jul 17, 2002 12:07
Beiträge: 976
Wohnort: Tübingen
Statt GL_T2F_V3F stehen dir auch GL_V2F, GL_V3F, GL_C4UB_V2F, GL_C4UB_V3F, GL_C3F_V3F, GL_N3F_V3F, GL_C4F_N3F_V3F, GL_T4F_V4F, GL_T2F_C4UB_V3F, GL_T2F_C3F_V3F, GL_T2F_N3F_V3F, GL_T2F_C4F_N3F_V3F und GL_T4F_C4F_N3F_V4F (siehe glInterleavedArrays) zu Verfügung.

_________________
"Du musst ein Schwein sein in dieser Welt, sangen die Prinzen, das ist so 1.0. Du musst auf YouTube zeigen, dass dir dein Schweinsein gefällt, das ist leuchtendes, echtes Web 2.0."
- Hal Faber

Meine Homepage: http://laboda.delphigl.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Aug 05, 2006 18:58 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Sobald du min 2 Texturkoordinaten brauchst, dann kommst du nicht drumherum die Defintion deines "Arrays" selber zu deklarieren. glInterleave bietet ein paar Möglichkeiten an. Aber alle sehen so aus, dass als hättest du Records mit den entsprechenden Werten hintereinander gelegt. VBOs ermöglichen aber unter anderem auch, dass du Vertex, Textur und Farbbuffer getrennt im Speicher ablegst. Also zu erst alle Vertices, dann Texturkoordinaten etc.

Anstellen von glInterleavedArrays kannst du das auch mit glVertexPointer etc (Siehe unten) machen.

Aber noch mal was zu DisplayListen. Diese sollten auf modernen Grafikkarten eigentlich auch VBOs benutzen. Von daher sollte es von der Geschwindigkeit kaum einen Unterschied geben. Wobei das in einer DL wohl noch ein bisschen besser optimiert werden kann. Also das Handling mit den VBOs.

Folgendes Dokument solltest du dir auch einmal anschauen.
http://developer.nvidia.com/object/using_VBOs.html


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Aug 05, 2006 22:39 
Offline
DGL Member

Registriert: Di Jun 13, 2006 08:11
Beiträge: 30
Das heißt ja dann, das ich mein Programm was ich mit DL's habe eigentlich
nicht umschreiben sollte, da es dann eh nicht schneller wird?
Ist das wirklich so, weil alle loben VBO's so?

Kurz zu meinem Programm:
Ich hab eine grosse Szene, wo ich auch keine Dreiecke rausschmeissen kann / will.
Ich benutze DisplayListen und von der Performance ist es naja
nicht so dolle... DIe Szene ist statisch und wird nur über translationen
und rotationen verändert. Macht es Sinn, trotzdem VBO's einzubauen?


Ok, ab ca. 2 Millionen Vertices, sind dann
DL's oder VBO's schneller? das würde die Entscheidung bringen,
weil das ist das was ich will.



Danke schonmal!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Aug 06, 2006 11:11 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Na ja. DLs können auch normale VertexArrays benutzen. Du kannst bei denen nicht kontrollieren was intern passiert. Und normal sollten auf einem System welches VBOs unterstützt auch VBOs benutzt werden.

VBOs sind aber wesentlich flexibler. Du kannst Teile davon updaten oder löschen. Oder wenn du ein riesen Mesh im Speicher hast kannst du recht einfach kontrollieren, dass nur gewisse Teile davon gezeichnet werden.

Ob du VBOs benutzen solltest kannst nur du selber wissen. Aber es kann auch durchaus sein, dass auf einem System VBOs nicht unterstützt werden. Dann aber höchstwahrscheinlich normale Vertex Arrays. Die sind bis auf kleine Unterschiede den VBOs ziemlich ähnlich. Dann sind DLs aber auch nicht schneller.

Zu der Geschwindigkeit von deinem Programm: *grummel* Deinen Betrag editieren wärend ich gerade eine Antwort schreibe. Schäm dich. ;-) Also 2 Mio sind nicht gerade wenig. Ich denke mal wirst immer alle Dreiecke davon zeichnen, oder? Aber noch mal zum Verständniss. DLs benutzen intern die VBO Technik. Es wird also entsprechend ziemlich in dem gleichen Segment liegen. Bei den ersten VBO implementationen konnte es passieren, dass man eine ungünstige Konstelation erwischt und es deswegen ein bisschen langsam war. Aber dieses Problem sollte heutzutag nicht mehr existieren. Also richtet sich alles nach dem was du damit vor hast. Und das wirst du selber am besten wissen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Aug 06, 2006 11:49 
Offline
DGL Member

Registriert: Di Jun 13, 2006 08:11
Beiträge: 30
Ok, ich denke ich werde VBO's nutzen, da ich mir jetzt überlegt habe,
nochmal was mit LOD zu machen, also in dem gleichen Projekt und dann
haben VBOs ja ein riesen Vorteil.

Kennst du da vielleicht noch was :D zum Lesen anschauen oder so?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Aug 06, 2006 16:48 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Das wurde bereits alles gepostet. Zum Einem das Tutorials bei uns und zum Anderen das Dokument von nvidia. Das sollte vollkommen ausreichen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Aug 11, 2006 07:26 
Offline
DGL Member

Registriert: Di Jun 13, 2006 08:11
Beiträge: 30
Ok, danke, hab mich jetzt eingelesen und es hat auch geklappt.

Danke für die Geduld :)


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 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:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.016s | 15 Queries | GZIP : On ]