应用尽可能的对顶点属性使用顶点-programming -- principles and practice using C++...

在项目链接时被执行。在链接阶段OpenGL ES 2.0为每个属性变量执行下面的步骤;检查每个属性变量,是否已通过glBindAttribLocation绑定。如果已绑定,指定的合适的属性索引被使用。如果没有,编译工具将产生一个一般的顶点属性索引。这个分配依赖编译工具,不同的编译工具将产生不同。应用能够使用glGetAttribLocation查询分配的绑定。 GLint glGetAttribLocation(GLuint program, const GLchar *name) program项目对象name属性变量名字glGetAttribLocation返回一个绑定属性变量名字的普通属性索引,当一个项目对象被项目链接时。如果那个名字不是激活的属性变量,或者项目不是一个有效项目对象,或者没有链接成功,返回-1,指示一个无效的属性索引。顶点缓冲区对象顶点矩阵使用的顶点数据被存储在客户内存中,当调用glDrawArrays或glDrawElements时,这些数据从客户内存被拷贝到绘图内存。这两个函数在第7章基本装配和光栅化描述,如果不用每次绘图时调用拷贝直接存储数据在绘图内存中将是更好的选择。这将显著提高渲染执行,减小内存带宽和电力消耗,所有这些对便携设备是非常重要的。这就需要用到顶点缓冲区对象来帮忙。顶点缓冲区对象允许OpenGL ES 2.0应用去分配和存储顶点数据到高效的绘图内存,从这里直接执行渲染。不仅仅是顶点数据,甚至是描述基元的顶点索引能使用glDrawElements去存储。 OpenGL ES支持两种类型的缓冲区对象,array buffer objects和element array buffer objects。矩阵缓冲区对象指使用GL_ARRAY_BUFFER创建的存储顶点数据的缓冲区对象。元素矩阵缓冲区对象是使用GL_ELEMENT_ARRAY_BUFFER创建的存储元素索引的缓冲区对象。注意:为更好地执行程序,我们推荐OpenGL ES 2.0应用尽可能的对顶点属性使用顶点缓冲区和元素索引。我们使用缓冲区对象前,需要分配缓冲区对象重新装载顶点数据和元素索引到合适的缓冲区对象。这在例6-4的代码里展示:例6-4创建和绑定顶点缓冲区对象void initVertexBufferObjects(vertex_t *vertexBuffer, GLushort *indices, GLuint numVertices, GLuint numIndices GLuint *vboIds)
pdf 文件大小:2.32MB