2016-10-02 2 views
-2

En utilisant glVertexAttribPointer l'implémentation opengl sait déjà à quel attribut emplacement/index dans vertex shader Vertex Attribute Object est lié, alors pourquoi est-il nécessaire de fournir de nouveau l'index d'attribut dans glEnableVertexAttribArray? Je pense après avoir utilisé glBindVertexArray (VAO); il aurait pu être suffisant pour utiliser seulement glEnableVertexAttribArray()? Pourquoi est-il nécessaire de fournir deux fois l'index des attributs? un dans glVertexAttribPointer et un dans glEnableVertexAttribArray()? S'il vous plaît supporter avec moi, je suis débutant et je ne connais pas encore tous les aspects de l'OpenGL.Pourquoi l'argument d'index est-il nécessaire dans glEnableVertexAttribArray?

[Cette question n'est PAS en double car certains essaient de la marquer comme doublon pour rediriger vers leurs réponses sur des questions non pertinentes pour gagner une note, c'est un acte égoïste! S'il vous plaît ne pas gâcher la question par marquage double si vous ne savez pas comment y répondre.]

Répondre

0

Parce qu'il est possible de définir un attribut de sommet à une valeur qui est constante pour tous les éléments à l'aide glVertexAttrib. Oui, vous pouvez le faire avec le même effet avec un uniforme, mais ce type de sélection par attribut d'où vient une valeur (provenant de array, ou set constant) existe depuis longtemps (depuis OpenGL-1.1 , bien qu'à l'époque il ne s'agissait pas d'attributs génériques, mais spécifiques, c'est-à-dire de position, de couleur, de normale et ainsi de suite) et de cet héritage hérité des attributs de vertex génériques.