OpenGL: VBO updaten ist zu langsam
-
Hi!
Als ich letztens einen MD2-Importer für meine 3D Engine entwickelt habe, ist mir aufgefallen, das ich die Vertexdaten im VBO nur sehr langsam updaten kann. Die FPS Rate ist von guten 800 FPS gleich mal auf 450 FPS herutner gegangen.Jetzt frage ich, wie die Daten des VBOs schneller neu setzen kann?
Zur Zeit mache ich es so:
Method UpdateVertices() If TDreiDe.iInit & DDD_VBO_SUPPORT Then glBindBufferARB GL_ARRAY_BUFFER_ARB, Self.iVBO glBufferDataARB GL_ARRAY_BUFFER_ARB, Self.iVertexCount*52, Self.oVertices.Buf(), .. GL_DYNAMIC_DRAW_ARB glBindBufferARB GL_ARRAY_BUFFER_ARB, Null EndIf End Method
Der Vertexcount beträgt gerade einmal 2000. Self.oVertices.Buf() ist ein Pointer auf die Vertexdaten. Den VBO neu zu strukturieren, so das ich ich nur über glBufferSubDataARB updaten brauch, hatte nur 10 FPS mehr gebracht.
Ich habe hier eine Vegleichs-Engine die mit DirectX läuft. Da ist die MD2 Animation konstant mit 800 FPS. Es psielt da keine Rolle ob Animation oder ohne.
mfg olli
-
Naja dynamische Geometrien sind immer langsamer als statische, die im vram bleiben.. Wuesste nicht wie das schneller gehen soll als mit VBO im DYNAMIC bzw. STREAM Mode.