Я не совсем уверен, как спросить это, или если это спрашивали раньше ...
Итак, поехали:
Я пытаюсь написать игру в Objective-C для iOS. Одной из главных особенностей этой игры является возможность преобразования 2D-ландшафта (технически 3D, однако он начинается с плоской 2D-плоскости с точками, разбросанными по ней, чтобы создать идеальную сетку из 20 квадратов 1x1) по вкусу пользователя; однако в Objective-C, по-видимому, вы не можете передавать массивы типа C через методы.
например:
-(VertexS *) getVertexArrayData {
VertexS myArray[definedAmount]; //VertexS being a structure
for (int i = 0; i != definedAmount; i++) {
myArray[i] = vertexData;
}
return *myArray;
}
//In the other file (the one with all my rendering), under a different class, inside a method
//Lets pretend the aforementioned method was under a class called "Terrain"
-(id) initWithFrame:(CGRect)frame
{
terrain = [[[Terrain alloc] init] autorelease];
[terrain constructLand];
VertexS *_vertexData = [terrain getVertexArrayData];
... etc.
}
Очевидно, это не работает. Не сказать, что это именно то, что я делаю, но очень похоже. Что происходит в моем точном коде, так это то, что я использую ивар для хранения данных вершины / индекса после получения информации от другого метода.
Учитывая, что OpenGL (ES) требует либо векторный контейнер (ну, в C ++), либо массив типа C (что технически одно и то же), чтобы правильно создать IBO / VBO, я в растерянности. Я возился с ним почти полтора дня, не в силах обойти проблему и слишком (мысленно), чтобы изучать NSMutableArrays - если только вы не предложите мне это замечательное сообщество, в котором я буду псевдо-чудом потерять достаточно веса, чтобы изучить NSMutableArrays (вероятно, лучше сказать «я перестану избегать незнакомого решения»).
Я не могу вспомнить другой мой вопрос ... Мрэх. Это, вероятно, не соответствует действительности, но если я вспомню, я найду способ спросить это.
В любом случае, требуется любая помощь. Я не знаю, что еще я могу сделать, чтобы обойти этот блокпост в моем проекте.