https://baike.baidu.com/item/glVertexPointer
个人理解:这三个方法的使用规则是,定义一个数组后,用glVertexPointer来描述这个数组,用enable和disable来激活和关闭。
glVertexPointer
编辑
本词条缺少信息栏、概述图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧!
glVertexPointer,是计算机用语。
目录
表现
编辑
void glVertexPointer(GLint size,
GLenum type,
GLsizei stride,
const GLvoid * pointer)
参数
编辑
size:指定了每个顶点对应的坐标个数,只能是2,3,4中的一个,默认值是4
type:指定了数组中每个顶点坐标的数据类型,可取常量:GL_BYTE, GL_SHORT,GL_FIXED,GL_FLOAT;
stride:指定了连续顶点间的字节排列方式,如果为0,数组中的顶点就会被认为是按照紧凑方式排列的,默认值为0
pointer:制订了数组中第一个顶点的首地址,默认值为0,对于我们的android,大家可以不用去管什么地址的,一般给一个IntBuffer就可以了。
描述
编辑
当开始render的时候,glVertexPointer 用一个数组指定了每个顶点的坐标,
size指定了每个顶点的坐标个数
type指定了每个坐标的数据类型,(和尚注:注意,这里不同的数据类型含义不同,如果选择GL_FIXED,那么0x10000表示单位长度,如果选择GL_FLOAT那么10f表示单位度。)
stride指定了一个顶点和下一个顶点间数据的排列方式,是"单一数组"还是"分散数组",单一数组的存储方式通常是更具效率的。当一个顶点数组被指定以后,size,type,stride,pointer被存储成client-side
当glDrawArrays或者glDrawElements被调用的时候,如果顶点数组处于可用状态,就会被使用;可以使用glEnableClientState或者glDisableClientState来激活或者禁用一个顶点数组,顶点数组默认是不可用并且是不可被glDrawArrays、glDrawElements两个函数使用的。
使用glDrawArrays函数可以根据顶点数组构建一个原始构图序列
使用glDrawElements可以根据序列化的顶点集合来创建相同的序列
Notes
glVertexPointer is typically implemented on the client side
Errors
GL_INVALID_VALUE is generated if size is not 2, 3, or 4
GL_INVALID_ENUM is generated if type is is not an accepted value
GL_INVALID_VALUE is generated if stride is negative
错误:
GL_INVALID_VALUE size 不是 2, 3, 4中的一个的时候
GL_INVALID_ENUM type 不是一个允许的值
GL_INVALID_VALUE stride是错误的