Registriert: Di Apr 29, 2008 18:56 Beiträge: 1213
Programmiersprache: Delphi/FPC
Hey,
wieso übergibst du GL_TRANSFORM_FEEDBACK_BUFFER an glGetBufferSubData? Das sollte in deinem Fall mit GL_ARRAY_BUFFER aufgerufen werden. Das Transform-Feedback musst du erst entsprechend initialisieren, eh du das nutzen kannst.
Was ist eigentlich der Sinn, das man die Daten auslesen kann, können die in der Graka manipuliert werden. Man kann ja genauso gut die Daten nach glBufferData im Hauptspeicher nicht löschen.
Registriert: Di Apr 29, 2008 18:56 Beiträge: 1213
Programmiersprache: Delphi/FPC
Hey,
ja das ist der Sinn von VBOs. Die Daten nochmal im RAM zu halten macht nur Sinn, wenn man die noch für irgendwelche Berechnungen braucht und nicht jedesmal die Daten zwischen RAM und VRAM hin und her schaufeln will. Die Daten können von der Graka manipuliert werden. z.B. für eine Partikel-Engine mit GPU unterstützung. Dafür nutzt man dann das Transform Feedback (mit 2 alternierenden VBOs) und manipuliert dann die Positions-Daten der Partikel auf der Graka. Eine Alternative zum glGetBuffer(Sub)Data wäre glMapBuffer damit werden die VBO-Daten im VRAM in den Client-AddressSpace gemappt und man kann dort lesend und schreibend zugreifen. Das ist ganz nützlich wenn man Mesh's im nachhinein deformieren möchte und es ist performanter als glGetBufferData, weil man nur die Daten überträgt, die man auch wirklich liest, bzw. schreibt.
Bei meine Animation mit dem Niveau-Anzeiger(Lazarus Version) habe ich die ganzen Vertex-Daten im RAM, weil ich als Option die Daten als Datei speichern kann, für meine Android und Java-Script Animation. Aber wen man nachträglich die Daten aus dem VRAM holen kann, kann ich die Daten aus dem RAM löschen, was mein Programm aufgeräumter macht.
Registriert: Di Apr 29, 2008 18:56 Beiträge: 1213
Programmiersprache: Delphi/FPC
Hey,
die Nutzung des Buffers (aka GL_STATIC_READ) ist dazu da, das der Treiber die Zugriffe auf die Daten optimieren kann. GL_STATIC_READ bedeutet so viel wie: Daten einmal ins VBO laden und dann oft im Client lesen. Eine Liste der Parameter gibts auch im Wiki: glBufferData
Mitglieder in diesem Forum: Google [Bot] und 27 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.