AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

VBO's in OpenGL verwenden

Offene Frage von "oki"
Ein Thema von oki · begonnen am 14. Mär 2013 · letzter Beitrag vom 15. Mär 2013
Antwort Antwort
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#1

VBO's in OpenGL verwenden

  Alt 14. Mär 2013, 17:48
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
42
  Mit Zitat antworten Zitat
Jens01

Registriert seit: 14. Apr 2009
673 Beiträge
 
#2

AW: VBO's in OpenGL verwenden

  Alt 14. Mär 2013, 21:12
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
Achtung: Bin kein Informatiker sondern komme vom Bau.
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#3

AW: VBO's in OpenGL verwenden

  Alt 15. Mär 2013, 07:28
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
42

Geändert von oki (15. Mär 2013 um 08:30 Uhr)
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#4

AW: VBO's in OpenGL verwenden

  Alt 15. Mär 2013, 08:39
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
42
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: VBO's in OpenGL verwenden

  Alt 15. Mär 2013, 08:52
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
Markus Kinzler
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#6

AW: VBO's in OpenGL verwenden

  Alt 15. Mär 2013, 09:05
Joop
42
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:52 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