修改OpenGL ES代码

时间:2011-10-07 07:06:57

标签: iphone objective-c ios xcode opengl-es

我正在创建一个opengl ES项目,我试图显示一些纹理,一切都很好,但问题是使用内存,每5秒增加几乎1 Mb,我想我做错了什么,我没有使用任何这个apple recommendations我会托盘肯定,但我想知道我的代码是否有一些错误,我有如何写作:

    // Generate the vertex buffer object (VBO)
glGenBuffers(1, &ui32Vbo);

// Bind the VBO so we can fill it with data
glBindBuffer(GL_ARRAY_BUFFER, ui32Vbo);

// Set the buffer's data
// Calculate verts size: (3 vertices * stride (3 GLfloats per each vertex))

glBufferData(GL_ARRAY_BUFFER, uiSize, verts, GL_STATIC_DRAW);

// Bind the VBO so we can fill it with data
glBindBuffer(GL_ARRAY_BUFFER, ui32Vbo);
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(3, GL_FLOAT, 20, 0);    // Stride = 20 bytes

glBindTexture(GL_TEXTURE_2D, textID);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);    
glTexCoordPointer(2, GL_FLOAT, 20, (void *)12);

glDrawArrays(GL_TRIANGLE_FAN, 4, 4);

// Bind the VBO so we can fill it with data
glBindBuffer(GL_ARRAY_BUFFER, 0);

非常感谢!!!

1 个答案:

答案 0 :(得分:3)

您应该只生成一次顶点缓冲区对象,使用它绘制。

似乎你每帧都会创建一个新的。