Das Zeichnen von VBO mit glDrawArrays funktioniert in OpenGL 2.1, aber nicht in OpenGL 3.x

8

Der Kern des Codes (rotes Rechteck):

%Vor%

Wenn ich den Kontext zu OpenGL 3.x umschalte, hört dieser Code auf zu arbeiten (ich kann nur die Farbe des Hintergrunds sehen), aber wenn ich VAO auf die gleiche Weise initialisiere wie der obige Code, verbinde ich VAO und Rufen Sie glDrawArrays auf, dann funktioniert es.

Was könnte das Problem sein? Wie kann ich VBO ohne Verwendung von VAO zeichnen?

(Shader sind wirklich einfach, vs nur multiples Matrizen und ps gibt rote Farbe aus)

    
chris 20.06.2011, 16:00
quelle

1 Antwort

7

Sehen wir uns die OpenGL-3-Kern-Spezifikation an:

Abschnitt 2.10

Erster Absatz:

  

Die Pufferobjekte, die verwendet werden sollen   durch die Vertex-Stufe des GL sind   gesammelt, um einen Eckpunkt zu bilden   Array-Objekt. Aller Staat, der mit dem verwandt ist   Definition der Daten, die vom Scheitelpunkt verwendet werden   Prozessor ist in einem Eckpunkt eingekapselt   Array-Objekt.

Letzter Absatz:

  

Ein UNGÜLTIGER BETRIEB Fehler ist   generiert, wenn einer der * Zeiger   Befehle, die den Ort angeben und   Organisation von Vertex-Array-Daten sind   genannt, während Null an die gebunden ist   ARRAY BUFFER Pufferobjektbindung   Punkt, und das Zeigerargument ist   nicht NULL³.

Und in der Fußnote:

  

Dieser Fehler macht es unmöglich, ein Vertex-Array-Objekt zu erstellen, das Client-Array-Zeiger enthält.   während Pufferobjekte weiterhin freigegeben werden können.

Oder mit anderen Worten: In OpenGL-3-Core müssen Sie VAOs

verwenden     
datenwolf 20.06.2011, 16:18
quelle

Tags und Links