Ich benutze OpenGL jetzt schon seit kurzer Zeit - und ich möchte einige Erläuterungen zu VBOs . Nach meinem Verständnis ist ein VBO ein im VRAM gespeichertes Objekt. Um eine Textur anzuwenden, binden wir sie im Sofortmodus einfach und geben die Texturkoordinaten vor den Scheitelpunktkoordinaten an. Bei VBOs scheint dies jedoch nicht der Fall zu sein.
Frage 1: Kann ich Texturdaten in einem VBO angeben? Welcher Teil der Daten?
Wenn ich ein Spiel in 2d mache, speichere ich normalerweise alle meine Objekte in Instanzen verschiedener Klassen. Wenn dann meine Zeichenroutine auftaucht, zeichne einfach die Objekte, die auf dem Bildschirm angezeigt werden. In einer 3D-Umgebung wäre es etwas schwieriger, nur die Objekte auf dem Bildschirm zu zeichnen, aber mit etwas Mathematik bin ich sicher, dass dies machbar ist.
Frage 2: Wenn wir herausgefunden haben, welche Objekte gerendert werden müssen, wäre es akzeptabel schnell, diesen entsprechenden Objekten eine "Anwenden" -Anforderung zu senden und sie selbst anwenden zu lassen? Oder gibt es einen besseren Weg?
Frage 3: Wenn ich eine vollständig dynamische Karte habe, aber Objekte, die sich nicht sehr oft ändern, gibt es Richtlinien für die Leistungsunterschiede zwischen GL_STATIC_DRAW
und GL_DYNAMIC_DRAW
?
Letzte Frage: Sollte ich überhaupt in Betracht ziehen, Scheitelpunktlisten zu verwenden? Oder sind VBOs nur eine bessere Option?
glDrawElements
jedes Objekt aufrufen wollen - oder sollte ich alles als Dreiecke speichern und nur eines haben glDrawElements
? Ist so oder so machbar?