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