Was ist der Zweck von "glEnableVertexAttribArray (GLuint-Index)" in OpenGL?

Nach dem Aufruf vonglVertexAttribPointer(GLuint index, ...) Das Vertex-Attribut ist standardmäßig deaktiviert, da das docs sage

Standardmäßig sind alle clientseitigen Funktionen deaktiviert, einschließlich aller generischen Vertex-Attribut-Arrays.

Warum müssen wir es mit einer zusätzlichen Funktion aktivieren? Kann jemand einen Fall nennen, in dem dies nützlich ist?

ei der Recherche habe ich Folgendes gelern

Mit demlayout(location = x) Qualifier in GLSL oderglBindAttribLocation Wir können den Speicherort explizit festlegen, anstatt ihn von OpenGL generieren zu lassen. Aber das ist nicht der Punkt meiner Frage.

glEnableVertexAttribArray kann nicht zum Zeichnen eines VAO mit mehreren Shadern verwendet werden. Da Attributpositionen mithilfe eines Programmobjekts abgefragt werden, wird angenommen, dass Positionen Shader-spezifisch sind. In diesem Fall können wir die richtigen Speicherorte für Attribute aktivieren, bevor der richtige Shader ausgeführt wird. Als ich dies testete, stellte ich fest, dass ein Positionswert in verschiedenen Shadern mehr als einmal auftreten kann. außerdem sah die Ausgabe falsch aus. Wenn Sie den Code sehen möchten, fragen Sie einfach.

Attributspeicherorte werden in der VAO gespeichert.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage