VBO Daten teilen
-
Hallo
ist es möglich die Vertices eines VBO so zu verwenden, das durch verschiedene
Indexarrays verschiedene Modelle damit gezeichnet werden können.
Ohe für jedes Modell die Vertices neu speichern zu müssen.Gruss Peter
-
Ja natürlich.
-
Guten Morgen
kannst du bitte kurz anreiissen wie.
Gruss Peter
-
Ehrlich gesagt versteh ich grad nicht inwiefern das für dich nicht offensichtlich ist!? Du kannst deine Attribute-Pointer doch irgendwo in das VBO zeigen lassen.
-
Hallo
das Thema hat sich erledigt, ich wollte ein VOB benutzen um sowohl einen Körper, als auch ein Drahtgittermodell zu zeichnen. Dafür wollte ich die Indexreihenfolge vertauschen und dann Linien ausgeben. Aber nachts um 3 fallen einem solche Sachen wie glPolygonMode nicht ein.
Andere Frage, kann man den glClientstate für die benötigten Arrays global setzen,
weil ich in den Beispielen immer nur sehe das die Leute sie bei der Definition einschalten, danach ab, beim Zeichnen ein danach ab etc.
Wo liegt da der Sinn???Gruss Peter
-
dagute schrieb:
das Thema hat sich erledigt, ich wollte ein VOB benutzen um sowohl einen Körper, als auch ein Drahtgittermodell zu zeichnen.
Wo liegt das Problem, da brauchst du doch nur einen zweiten Indexbuffer der die Vertices eben entsprechend zu Linien verbindet!?
dagute schrieb:
Andere Frage, kann man den glClientstate für die benötigten Arrays global setzen,
weil ich in den Beispielen immer nur sehe das die Leute sie bei der Definition einschalten, danach ab, beim Zeichnen ein danach ab etc.
Wo liegt da der Sinn???Äh ja natürlich kann man. Der Sinn? ka, vermutlich wollen die nicht alles mit VBOs rendern!?
-
Sorry das ich euch so löchere, ich möcht gern die Basis meines Programms
gut haben.Habe jetzt die VOBs am Laufen, und ist auch superschnell.
Meine Frage - warum bestehen die Daten der VOBs aus dieser Kombination von Vertexen, Farben, etc.Wäre es nicht schlauer, lauter einzelne Arrays zu benutzen als VOBs,
das würde ermöglichen zum Beispiel die Farben oder ähnliches mit einem memcpy
zu modifizieren.
Bringt das was, wenn man oft die Inhalte der VOBs ändern muss??Gruss Peter
-
VBOs kann der Grafiktreiber im Speicher auf der Grafikkarte ablegen. Das bedeutet zwar dass du nicht einfach so Zugriff drauf hast aber es bedeutet auch dass die GPU viel schneller und vor allem unabhängig von der CPU drauf zugreifen kann da die Daten nicht ständig über den Bus geschickt werden müssen was im Fall von normalen RAM Arrays notwendig wäre. Gerade wenn du die Inhalte eben nicht ständig ändern musst (was eigentlich eher die Regel als die Ausnahme ist) bringt das einen massiven Performancevorteil. Vielleicht so zum Vergleich: Der Bus zwischen GPU und VRAM kann auf einer GTX 590 327GB/s übertragen. Das theoretische Maximum zwischen RAM und GPU beträgt für einen 16 Lane PCIe 3.0 Slot 16GB/s.
Je weniger Daten pro Frame über den PCI Bus müssen desto besser. Und VBOs geben dir die nötigen Mittel in die Hand um dafür zu sorgen dass kein Byte mehr als notwendig über den PCI Bus muss. Es liegt aber natürlich an dir diese auch weise einzusetzen...
Was genau hindert dich dran z.B. die Farben in ein separates VBO zu legen?