Привет, я относительно новичок в программировании на iOS и использую цель C. Недавно я столкнулся с проблемой, которую, похоже, не могу решить, я пишу загрузчик модели OBJ для использования в моем программировании на iOS. Для этого я использую два массива, как показано ниже:
static CGFloat modelVertices[360*9]={};
static CGFloat modelColours[360*12]={};
Как видно, длина в настоящее время назначается с жестко закодированным значением 360 (количество граней в конкретной модели). Нет ли способа, которым это может быть динамически выделено из значения, которое было вычислено после чтения файла OBJ, как это сделано ниже?
int numOfVertices = //whatever this is read from file;
static CGFloat modelColours[numOfVertices*12]={};
Я пытался использовать массивы NSMutable, но мне было трудно их использовать, поскольку, когда дело доходит до рисования собранной сетки, мне нужно использовать этот код:
-(void)render
{
// load arrays into the engine
glVertexPointer(vertexStride, GL_FLOAT, 0, vertexes);
glEnableClientState(GL_VERTEX_ARRAY);
glColorPointer(colorStride, GL_FLOAT, 0, colors);
glEnableClientState(GL_COLOR_ARRAY);
//render
glDrawArrays(renderStyle, 0, vertexCount);
}
Как видите, команда glVertexPointer требует значения в виде массива CGFloat:
glVertexPointer (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);