Opengl es 是否将索引数据附着到VAO(顶点数组对象)?

Opengl es 是否将索引数据附着到VAO(顶点数组对象)?,opengl-es,webgl2,Opengl Es,Webgl2,我知道使用VAOs可以提供所有属性数据,例如顶点法线、顶点位置、顶点颜色、纹理坐标等。但是在使用抽屉元素而不是绘图数组绘制的情况下,索引数据如何呢 到目前为止,我创建了一个VAO并提供了上面的数据,但不确定如何将索引缓冲区数据附加到VAO(如果建议或可能)顶点数组对象中未存储任何缓冲区的数据。顶点数组对象只是收集如何“使用”不同缓冲区的数据的信息。 它知道数据格式、类型、跨步偏移和缓冲区的名称,但它不“镜像”存储在缓冲区对象中的数据 命名元素缓冲区对象的名称是顶点数组对象状态向量的状态 这意味着

我知道使用VAOs可以提供所有属性数据,例如顶点法线、顶点位置、顶点颜色、纹理坐标等。但是在使用
抽屉元素而不是
绘图数组绘制的情况下,索引数据如何呢


到目前为止,我创建了一个VAO并提供了上面的数据,但不确定如何将索引缓冲区数据附加到VAO(如果建议或可能)

顶点数组对象中未存储任何缓冲区的数据。顶点数组对象只是收集如何“使用”不同缓冲区的数据的信息。 它知道数据格式、类型、跨步偏移和缓冲区的名称,但它不“镜像”存储在缓冲区对象中的数据

命名元素缓冲区对象的名称是顶点数组对象状态向量的状态

这意味着顶点数组对象中没有存储任何数据。索引存储在元素缓冲区中,但索引缓冲区的名称(整数对象编号)在顶点数组对象中引用

绑定顶点数组对象后(
glBindVertexArray
)必须绑定
GL\u元素\u数组\u缓冲区。
GL\u元素\u数组\u缓冲区
对象存储在顶点数组对象状态向量中。
如果顶点数组对象已解除绑定并再次绑定,则
GL\u元素\u数组\u缓冲区也将已知并再次绑定。但是,如果元素数组缓冲区在绑定顶点数组对象时显式解除绑定,它将从状态向量中移除

见:

顶点数组对象是通过绑定
genvertexarray
用命令

void BindVertexArray( uint array );
array是顶点数组对象名称。生成的顶点数组对象是一个新的状态向量,包含所有状态,并具有表6.2中列出的相同初始值。
BindVertexArray
也可用于绑定现有顶点数组对象。 如果绑定成功,则不会对绑定顶点数组对象的状态进行任何更改,并且之前的任何绑定都会被破坏

表6.2,顶点数组对象状态
顶点属性数组启用
顶点属性数组大小
顶点属性数组步长
顶点属性数组类型
顶点属性数组规格化
顶点属性数组整数
顶点属性数组除数
顶点属性数组指针
元素数组缓冲区绑定
顶点属性数组缓冲区绑定


我很好奇索引缓冲区对象数据或制服是否会以某种方式存储在VAOs中? 制服存储到属于程序对象的默认制服块


制服存储到属于程序对象的默认制服块,与顶点数组对象没有关系。

是的,我了解这些属性的绑定和解除绑定。我很好奇索引缓冲区对象数据或制服是否会以某种方式存储在VAOs中?我这样问是因为VAOs似乎封装了特定实体的功能。既然IBO(索引缓冲区对象)也封装了单个实体的索引缓冲区对象,为什么不将其以某种方式包含在VAO中呢?可能吗?如果是,你怎么做?谢谢大家!@我扩展了答案,所以听起来VAO只是指令而不是数据。如果是这种情况,那么索引数据就不会出现在那里,因为在提取数据时没有“指令”。这只是一个带抽屉元素的绑定和绘制调用。是否正确?@失谐是,顶点数组对象由表组成。在这些表中,包含对缓冲区对象的引用以及对哪个属性使用哪个缓冲区的信息。索引缓冲区是单个引用。VAO中没有任何索引或属性值。