在Objective C中动态设置C-Struct数组的大小?

时间:2013-10-17 10:28:48

标签: ios objective-c c opengl-es struct

在我的OpenGL ES 2.0项目中,我在一个初始化Vertice和Indice c-Struct数组的对象中有以下代码:

Vertex Vertices [] = {
{{0.0, 0.0, 0}, {0.9, 0.9, 0.9, 1}},
{{0.0 , 0.0 , 0}, {0.9, 0.9, 0.9, 1}},
{{0.0, 0.0, 0}, {0.9, 0.9, 0.9, 1}},
{{0.0, 0.0, 0}, {0.9, 0.9, 0.9, 1}},
};

static GLubyte Indices []= {
0, 0, 0,
0, 0, 0,
0, 0, 0,
0, 0, 0,
};

由于我想要渲染不同的多边形,我希望能够从调用类动态设置顶点和索引。我试过放:

Vertex Vertices [] = {
};

static GLubyte Indices []= {
};

这是我将顶点设置为verticeArray的地方(这是从调用类设置的数组)。

- (void)setupMesh {
int count = 0;

for (VerticeObject * object in verticesArray) {

    Vertices[count].Position[0] = object.x;
    Vertices[count].Position[1] = object.y;
    Vertices[count].Position[2] = object.z;

    count ++;
    }
}

然而,这会导致崩溃,我假设因为数组从未分配/内存分配。任何人都可以建议我如何实现这一目标?

1 个答案:

答案 0 :(得分:1)

你必须做这样的事情。

    int *arr = (int *)malloc(5*sizeof(int));

您可以用int替换结构类型,即..

typedef struct vertex {
  int x[3];
  float y[4]; 
} vertex;

int count = 10;

vertex *Vertices = (vertex *)malloc(count * sizeof(vertex));

完成后你需要释放内存。

free(Vertices);
Vertices = NULL;