将NSMutableArray复制到GLES渲染的浮点数组中

Fog*_*zie 3 opengl-es objective-c ios

我有一个名为mVerticies 的NSMutableArray存储为我的类的成员,我想将它们放入一个float数组中,用glVertexAttribPointer绘制它们.

通常在绘图时,我会有类似的东西:

float verticies[] = {-1, -1, 1, -1};

// ... prepare to draw

glVertexAttribPointer(GLKVertexAttribPosition,
    2, GL_FLOAT, GL_FALSE, 0, verticies);

// ... draw
Run Code Online (Sandbox Code Playgroud)

但是为了使用glVertexAttribPointer函数,我需要一个float [].verticies存储为NSMutableArray,因为它们经常更改.是否有一种简单的方法可以将动态float []存储为成员或快速将NSMutableArray转换为float []?

And*_*sen 8

假设值存储为NSNumbers,您可以执行以下操作:

float *floatsArray = malloc([numbersArray count] * sizeof(float));
if (floatsArray == NULL) {
    // handle error
}
[numbersArray enumerateObjectsWithOptions:NSEnumerationConcurrent usingBlock:^(NSNumber *number, NSUInteger idx, BOOL *stop) {
    floatsArray[idx] = [number floatValue];
}];

// use floatsArray

free(floatsArray);
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,这很有效......虽然它也重申了我的观点,即Objective-C很难看. (2认同)