当仅渲染索引缓冲区的子集时,如果缓冲区的其余部分包含未初始化顶点的索引,则Instruments的“OpenGL ES Analyzer”似乎会报告“未初始化的缓冲区数据”警告。
忽视是否安全?有办法摆脱它吗?它可以隐藏真正的问题吗?
答案 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);