这是我的设置功能:
const GLsizeiptr data_size = NUMBER_OF_CUBE_VERTICES * 9 *sizeof(float);// allocate a new bufferglGenBuffers(1,&cubeVBO);glBindBuffer(GL_ARRAY_BUFFER,cubeVBO);glBufferData(GL_ARRAY_BUFFER,data_size,data,GL_STATIC_DRAW);float* ptr = (float*)data;glVertexAttribPointer(ATTRIB_VERTEX,3,GL_float,GL_FALSE,sizeof(struct Vertex),(ptr + 0));glEnabLevertexAttribarray(ATTRIB_VERTEX);glVertexAttribPointer(ATTRIB_color,4,(ptr + 3));glEnabLevertexAttribarray(ATTRIB_color);glVertexAttribPointer(ATTRIB_TEXCOORD0,2,(ptr + 7));glEnabLevertexAttribarray(ATTRIB_TEXCOORD0);glGenBuffers(1,&cubeIBO);glBindBuffer(GL_ELEMENT_ARRAY_BUFFER,cubeIBO);glBufferData(GL_ELEMENT_ARRAY_BUFFER,NUMBER_OF_CUBE_INDICES*sizeof(glubyte),s_cubeIndices,GL_STATIC_DRAW);
数据数组如下所示:
static float data[] ={// position // // color // //UV//-1.0,+1.0,255,-1.0,};
这是我的渲染代码:
glClearcolor(0.5f,0.5f,1.0f);glClear(GL_color_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);glBindBuffer(GL_ARRAY_BUFFER,cubeVBO);glBindBuffer(GL_ELEMENT_ARRAY_BUFFER,cubeIBO);glDrawElements(GL_TRIANGLE_STRIP,NUMBER_OF_CUBE_INDICES,GL_UNSIGNED_BYTE,s_cubeIndices);
此外,我尝试使用没有索引缓冲区的DrawArrays函数,但结果是相同的 – 没有渲染几何.
我的程序运行时,输出窗口中还有GLError 1282.
感谢你对我的问题有任何帮助.
当您不使用缓冲区对象,而是使用顶点数组时,您必须通过调用将当前绑定的缓冲区对象解除绑定到GL_ARRAY_BUFFER目标
glBindBuffer(GL_ARRAY_BUFFER,0);总结
以上是内存溢出为你收集整理的ios – opengl es VBO用法 – 没有几何渲染全部内容,希望文章能够帮你解决ios – opengl es VBO用法 – 没有几何渲染所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)