2.8 顶点数组对象

什么是顶点数组对象?

上一节介绍了缓冲区对象,缓冲区就是个内存块,缓冲区对象 = 图形服务器中的内存块 + 一个ID。
顶点数组,是为了减少函数调用数量,为了避免共享顶点的冗余,而将顶点放在数组中。
那顶点数组对象呢?顶点数组对象,就是 顶点数组 + 一个ID名称。然后通过这个名称,来对这个顶点数组进行访问。

为什么要使用顶点数组对象?

为了方便在不同的顶点数组之间进行切换。由于顶点数组,同一个类型的只有一个,所以,当顶点数据不止有一个数组的时候,就需要将数组A绑定到顶点数组上,使用。用完之后,再将数组B绑定到顶点数组上,使用,这样来回切换,麻烦。而由于顶点数组对象,可以有多个,每个对象,通过名称来区分。这样,假如有两个顶点数组,我们申请两个顶点数组对象,将两个顶点数组,绑定到不同对象上,这样,使用的时候,就只需要在两个对象之间切换,不需要来回绑定。

如何使用顶点数组对象

与顶点数组对象,相关联的函数有4个,它们分别是glGenVertexArrays,glBindVertexArray,glDeleteVertexArrays, glIsVertexArray。
这四个函数,和之前的缓冲区对象有点类似,glGenBuffers,glBindBuffer, glDeleteBuffers,glIsBuffer。

glGenVertexArrays
void glGenVertexArrays(GLsizei n, GLuint *arrays);
返回n个当前未使用的名字,这些未使用的名字保存在arrays中。

glBindVertexArray
void glBindVertexArray(GLuint array);
激活对应的array,表示即将进行的操作,作用于array上面。

glDeleteVertexArrays
void glDeleteVertexArrays(GLsizei n, GLuint *arrays);
这个和glGenVertexArrays对应,表示删除arrays中的n个数组对象。

glIsVertexArray
GLboolean glIsVertexArray(GLuint array);
查询array这个数组对象,是否正在被使用。如果array是之前glGenVertexArrays()产生的一个顶点数组对象的名字,但是随后没有删除,返回GL_TRUE。如果array是0或者一个并非顶点数组对象的名字的非零值,返回GL_FALSE。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值