我想实现功能,以便可以在运行时向/从顶点数组添加/删除顶点。
有一种通用的方法吗?

顶点数据的推荐格式似乎是结构的C数组,
所以我尝试了以下。保留一个指向Vertex结构数组的指针作为属性:

@property Vertex *vertices;


然后创建一个新数组并复制数据

- (void) addVertex:(Vertex)newVertex
{
    int numberOfVertices = sizeof(vertices) / sizeof(Vertex);
    Vertex newArray[numberOfVertices + 1];

    for (int i = 0; i < numberOfVertices; i++)
        newArray[i] = vertices[i];

    newArray[numberOfVertices] = newVertex;
    self.vertices = newArray;
}


但没有运气。我对C并不完全有信心,所以这真的很简单。

最佳答案

这就是我刚刚做的事情:

//verts is an NSMutableArray and I want to have an CGPoint c array to use with
//  glVertexPointer(2, GL_FLOAT, 0, vertices);... so:

CGPoint vertices[[verts count]];
for(int i=0; i<[verts count]; i++)
{
    vertices[i] = [[verts objectAtIndex:i] CGPointValue];
}

关于ios - OpenGL ES-更新顶点数组,添加/删除顶点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5724557/

10-10 10:31