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)
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