opengles2.0 学习笔记
- 指定图元顶点数据(亦称顶点属性)
顶点属性有常量顶点属性,和属性数组。
常量指的是所有的顶点都公用此属性。比如单色的三角形,则颜色属性对所有的顶点都一样。
通过命令glVertexAtrrib*f(index,float...) 或 glVertexAtrrib*fv(index,float*)来指定。2.0版本暂时只支持 float类型的顶点常量。
如果每个顶点的某个属性不可以用常量,则可以用属性数组来表示。每一个顶点的属性存放在数组里。
glVertexAttribPoint(index,size,type,normalized,stride,ptr) 用来指定顶点属性
index: 把此属性数据绑定在第几个属性槽,范围从 0到 max vertex attributes supported – 1 ,2.0版本要求最少支持8个属性槽。也就是说一个顶点最少有8个属性,基本也够用了。
size:表示此属性有几个分量。比如如果是表示位置的属性,则可能有3个分量;如果是表示纹理坐标的分量,则可能是2;等等。
type:表示每个分量的类型,比如可以是 GL_FLOAT GL_BYTE GL_UNSIGNED_BYTE 等
normalized:表示由非float型向float型转换时,是否需要标准化,即转换到 [0,1],或[-1,1]范围内
stride:由于属性在buff内有可能不是连续存放的(即通一种属性之间有间隔),stride则表示此间隔,用于寻找下一个属性。
ptr:即指向此buff的指针。
顶点属性有两种属性,一个是常量属性,一种是属性数组。要想使用顶点属性数组功能,则需要调用 glEnableVertexAttribArray(index)命令;调用glDisableVertexAttribArray(index)则表示
index处的表示的属性是常量属性。
顶点数组数据存在应用程序的内存中,每次调用glDrawElements()和glDrawArrays()都会把顶点数组数据从内存拷贝到图形显存中。很消耗时间跟总线带宽。