Преобразование структуры C в объективные объекты C - iPhone - OpenGL Es - PullRequest
1 голос
/ 16 февраля 2012

Ниже приведен пример синтаксического анализа файла DAE в OpenGL ES (http://www.everita.com/lightwave-collada-and-opengles-on-the-iphone).

В этом примере есть следующий код:

const Vertex3D tigerBottomNormals[] = {
{-0.425880, -0.327633, 0.350967},
{-0.480159, -0.592888, 0.042138},
{-0.113803, -0.991356, 0.065283},
};

Здесь структура C используется для хранения 3 массивов, каждый из которых содержит три значения с плавающей запятой.

Мой вопрос заключается в том, как бы мне преобразовать эту структуру данных в объектные объекты C. Я думаю, что я бы создал NSArrays в большем контейнере NSArray, но не уверен, как мне следует объединить три отдельных значения с плавающей точкой, чтобы они могли быть добавлены как один элемент в массив.

Заранее спасибо.

Ответы [ 3 ]

3 голосов
/ 16 февраля 2012

Я не знаю много openGL ES, но вы могли бы объявить класс как:

@interface YourClass : NSObject
{
   float value1;
   float value2;
   float value3;
}

@end

Для хранения ваших переменных. Вы можете сохранить эти объекты в NSArray, если хотите.

2 голосов
/ 16 февраля 2012

NSValue - это целевой класс c, предназначенный для создания контейнера для данных c.

проверьте этот ответ

2 голосов
/ 16 февраля 2012

Я бы рекомендовал вам пересмотреть свое решение о замене простых C-структур на классы Objective-C в этом случае. Objective-C является подмножеством C, поэтому он работает с простыми структурами C без проблем, и приведенный выше код должен скомпилироваться. У меня есть несколько проектов с низкоуровневыми математическими структурами, реализованными в C / C ++, что делает код простым и читаемым для этой конкретной задачи.

Однако, если вам строго требуется оболочка Obj-C, проверьте класс CIVector - вы должны создать что-то подобное (или даже использовать CIVector напрямую, поскольку CoreImage является частью iOS 5).

...