“未初始化的缓冲区数据”在OpenGL ES Analyzer中是否会出现误报?

时间:2012-12-04 18:51:40

标签: ios opengl-es opengl-es-2.0 instruments

当仅渲染索引缓冲区的子集时,如果缓冲区的其余部分包含未初始化顶点的索引,则Instruments的“OpenGL ES Analyzer”似乎会报告“未初始化的缓冲区数据”警告。

忽视是否安全?有办法摆脱它吗?它可以隐藏真正的问题吗?

1 个答案:

答案 0 :(得分:1)

contains indices of uninitialized vertices - > "Uninitialized Buffer Data"

忽视是否安全?

没有。因为您可能为子集设置了不正确的值,并且可能发生非法内存访问。

有没有办法摆脱它?

是。初始化顶点。或顶点缓冲对象(VBO),如果你使用它。

它能否隐藏真正的问题?

没有。它清楚地说明了你的问题。

这是我的应用程序中的片段,只渲染缓冲区的子集:

glBindVertexArrayOES(_vertexArrays[currentObjectIndex]);
glUseProgram(_program);
glUniformMatrix4fv(uniforms[UNIFORM_MODELVIEWPROJECTION_MATRIX], 1, 0, _mvpMatrices[currentObjectIndex].m);
ObjectGL* object = [self.graphicsDataSource.arrayOfObjects objectAtIndex:currentObjectIndex];
// first part of buffer
glDrawArrays(GL_TRIANGLES, 0, section_object.sglSize);
// second part of buffer, accessed with offset given by second parameter
glDrawArrays(GL_LINE_LOOP, section_object.sglSize, section_object.sglSizeBounds);