绘制一个立方体的时候,需要6个正方形,普通的画法,需要指定6 × 4 = 24个顶点
进一步优化:指定8个顶点,存在数组中,再创建另外一个数组,保存每个面使用的顶点序号。就是一个比较合理的程序结构。但程序依然要循环24次,分别指定每个正方形的顶点。
进一步优化,使用顶点数组:
1. 顶点数组和前面的优化方法一样,一个数组保存顶点,一个数组保存顶点序号
2. 优点:不需要用普通的算法循环逐个循环指定顶点,而是把这两个数组传个OpenGL,OpenGL自动的查找顶点并绘制。减少了函数运行次数,提高运行效率
顶点数组是保存在客户端的,该机制也是在客户端生效。服务器端并不知道是否启用定点数组,也不关注
使用顶点数组的方法:
glEnableClientState(GL_VERTEX_ARRAY); //启动顶点数组功能
glVertexPointer(3, GL_FLOAT, 0, vertex_list);//指定保存顶点的数组
glDrawElements(GL_QUADS, 24, GL_UNSIGNED_INT, index_list); //指定保存顶点序号的数组,并开始绘制
顶点数组还可以保存配套的与顶点相关的信息:
1. 纹理坐标
2. 法线向量

本文介绍了OpenGL中的顶点数组优化方法,通过指定顶点和序号数组,减少函数调用提高效率。进一步讲解了顶点数组可以保存的额外信息,如纹理坐标、法线向量和颜色。还对比了顶点数组和显示列表的优缺点,并引入了顶点缓冲区对象,强调其数据保存在服务器端,可随时修改的特点,以及如何利用多个缓冲区优化性能。
最低0.47元/天 解锁文章
2606

被折叠的 条评论
为什么被折叠?



