Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   VBO's in OpenGL verwenden (https://www.delphipraxis.net/173758-vbos-opengl-verwenden.html)

oki 14. Mär 2013 16:48

VBO's in OpenGL verwenden
 
Hallo Leute,

leider hat mir die Suche auch nicht weiter helfen können. Aus diesem Grund hier meine Frage als neuer Thread. Ich habe folgende Ausgangsbedingungen.

In meinem Projekt können mehrere Objekte angelegt werden, die dann in OpenGL gezeichnet werden sollen. Diese Objekte sind geometrische Objekte, Punkte, Dreiecke ... bis zu NURBS. Zusätzlich ist die Darstellung der Objekte mit diversen Eigenschaften versehen wie Visible, Punkt- und Linienstärke, Farbe, Transparenz, zeichnen als Wireframe, solid usw.

Da die Anzahl der Objekte oder die pro Objekt zu zeichnenden Punkte (hier mehrere 100.000) dazu führt, dass das Rendern auf dem Bildschirm unansehnlich wird möchte ich VBO's (Vertex Buffer Objects) verwenden.

Die grundsätzliche Benutzung von VBO's ist mir klar. Leider sind alle Tutorials die ich gefunden habe jedoch so aufgebaut, dass es nur um das Zeichnen einer Punktmenge geht. Also x-Anzahl Punkte, zeichen als vermaschte Dreiecke usw.

Bei mir ist es jedoch so, dass jedes Objekt für sich eigene Ansprüche an das Zeichnen hat. Zuerst dachte ich, dass ich für jedes Objekt einen eigenen Vertex Buffer anlege. Also jedes Object hat eine Eigenschaft vBO für die dann glGenBuffer aufgerufen wird. Nach dem Motto, 5 Objekte, also 5 mal glGenBuffer. Das scheint aber so nicht zu gehen. Mann kann wohl mehrere Buffer anlegen, aber dass dann nur in einem Rutsch in glGenBuffer. Als nächstes kommt glEnableBuffer. Hier stellt sich jetzt bei mir die Frage, kann ich das für jedes Objekt einzeln machen. Ich hab den Eindruck nein, da ich für glDrawArrays als Parameter nicht explizit eine BufferID angeben kann. Zusätzlich ist das Zeichnen in unterschiedlichen Modi, dass eine Objekt mittels linestrip, dass andere mittels triangle usw. nicht möglich.

Okay, ich denke man sieht deutlich, dass ich keinen Plan habe, wie das wirklich funzt.

Gibt es jemanden, der mir mal kurz erklären kann wie ich das aufbauen muss. Ich dachte an die Implementierung eines "DrawObservers" der die ganzen Sachen managed. Ist bei meinem Projekt nicht gerade wenig Aufwand und bevor ich damit anfange frag ich lieber noch mal.


Schon mal Dank und liebe Grüße

oki

Jens01 14. Mär 2013 20:12

AW: VBO's in OpenGL verwenden
 
Lade Dir glVBO mit dem Beispiel runter und guck Dir das mal an.
Du solltest das Forum für OpenGL-Fragen nutzen (hoffe, dass ich das hier schreiben durfte).

Gruss Jens

oki 15. Mär 2013 06:28

AW: VBO's in OpenGL verwenden
 
Hallo Jens,

Dank schon mal für die Antwort. Ich schau mir den Code an.
Gibts hier ein spezielles Forum für OpenGL? Du meinst sicher das direkte GL-Forum.
Dank und Gruß

oki

oki 15. Mär 2013 07:39

AW: VBO's in OpenGL verwenden
 
Okay, hab mir den Code angeschaut.
Das ist soweit klar. Mein Problem ist aktuell wohl ein generelles Verständnisproblem für die Verwendung von glGenBuffer usw.

Somit mal ein paar konkrete Fragen.

Kann ich glGenBuffer mehrfach nacheinander aufrufen und habe damit mehrere unabhängige Buffer zur Verwendung oder geht der erste alloziierte Buffer nach dem zweiten Aufruf verloren?

Geht das so nicht, müsste ich alle Objekte in einem Buffer organisieren und darin für die unterschiedlichen Zeichenmethoden "organisieren".
Geht das so, kann ich für jedes Objekt einen VertexBuffer anlegen (glGenBuffer). Dann könnte ich in einer Schleife über alle Objekte prüfen, ob das aktuelle Objekt gezeichnet werden soll, den Buffer enable (glEnableBuffer) schalten und zeichenen.

Müsste dann nach dem Zeichnen der aktuell verwendete Buffer wieder disenable gesetzt werden um den folgenden zu aktivieren und zu zeichnen?


Gruß oki

mkinzler 15. Mär 2013 07:52

AW: VBO's in OpenGL verwenden
 
Zitat:

Gibts hier ein spezielles Forum für OpenGL? Du meinst sicher das direkte GL-Forum.
Ich vermute mal, er meint ein Forum wie DelphiGL

oki 15. Mär 2013 08:05

AW: VBO's in OpenGL verwenden
 
Joop


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:36 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz