OpenGL ES 2.0 und Vertexpufferobjekte (VBO)

8

Ich kann nicht herausfinden, wie ein Vertex-Puffer-Objekt für mein Gelände in opengles 2.0 für iPhone zu verwenden. Es sind statische Daten, daher hoffe ich auf einen Geschwindigkeitsschub durch die Verwendung von VBO. In regulären OpenGL verwende ich Display-Listen zusammen mit Shadern kein Problem. In opengles 2.0 muss ich jedoch die Eckendaten als Attribut an den Shader senden und weiß nicht, wie das mit dem VBO funktioniert. Wie kann der Vertex-Puffer wissen, an welches Attribut er die Vertex-Daten binden muss, wenn er aufgerufen wird? Ist das überhaupt in opengles 2.0 möglich? Wenn nicht, gibt es andere Möglichkeiten, das Rendern meines Terrains, das statisch ist, zu optimieren?

    
Nitrex88 28.07.2011, 05:02
quelle

1 Antwort

12

Sicher, das ist eigentlich ziemlich einfach, Ihr Attribut hat eine Position und Vertex-Daten werden mit glVertexAttribPointer für einfache Vertex-Arrays wie folgt gespeist:

%Vor%

Für VBOs ist es das gleiche, aber Sie müssen den Puffer an das Ziel GL_ARRAY_BUFFER binden, und der letzte Parameter von glVertexAttribPointer ist jetzt ein Offset in den Pufferspeicher. Der Zeigerwert selbst wird als Offset interpretiert:

%Vor%

In diesem Fall ist der Offset 0, wenn die Vertexdaten am Anfang des Puffers hochgeladen werden. Der Offset ist ein Maß in Bytes.

Die Zeichnung wird dann mit glDrawArrays / glDrawElements ausgeführt. Hoffe das hilft!

    
Matias Valdenegro 29.07.2011, 00:57
quelle