Приложение OpenGL ES для iPad / X-Platform: C ++ или Objective-C? - PullRequest
2 голосов
/ 12 сентября 2010

Я надеюсь, что это технический (а не религиозный) ответ, но мне интересно, стоит ли мне использовать Objective-C или C ++ для создания приложения OpenGL ES на iPad?

Поскольку конечной целью было бы также скомпилировать его в Windows и OS X, я склонен использовать C ++ (и использовать ObjC только для того, что мне нужно: App Delegate и т. Д.), Но у меня ноль опыт разработки Objective-C.

Могу ли я взаимодействовать с классами C ++ из Objective-C? Есть ли веская причина использовать ObjC поверх C ++?

Или мне просто использовать старый старый C?

Ответы [ 4 ]

1 голос
/ 12 сентября 2010

Книга Программирование iPhone 3D может вас заинтересовать. Философия книги - использовать Objective-C как можно меньше. Весь код рендеринга написан на переносимом C ++.

1 голос
/ 12 сентября 2010

Вам нужен Objective-C для доступа к прикосновениям и некоторым другим библиотекам, которые предоставляет Apple.Используйте .mm, чтобы сделать его Objective-C ++, поэтому вы можете использовать оба.

Но для переносимости, используйте Obj-C только тогда, когда вам нужно.Кроме того, я хотел бы отметить, что OpenGL ES предназначен для встраиваемых систем, а не для Mac OS X или Windows, вам нужно использовать OpenGL, и да, они разные.

1 голос
/ 12 сентября 2010

C ++ и Objective-C могут смешиваться (как Objective-C ++), хотя классы C ++ не могут наследоваться от классов Objective-C и наоборот. Вы также должны позаботиться о том, чтобы установить флаг компилятора в Xcode, чтобы ваши конструкторы и деструкторы C ++ вызывались по мере необходимости объектами Objective-C.

Что вы должны использовать: любой из них будет работать. Objective-C будет необходим, по крайней мере, для части приложения, ориентированной на пользователя, так как вам это нужно для создания окна, контекста OpenGL и т. Д. Но ваша логика и движок могут быть в C ++ или даже в сборке ARM, если это необходимо .

1 голос
/ 12 сентября 2010

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

В общем, если вы нацелены на кросс-платформенную поддержку GLES, попробуйте написать ее на C ++ для общих целей и всего остального, Objective-C (где вам нужно выполнить такие вещи, как настройка EAGLLayer и т. д.).Это, вероятно, сработает лучше всего для ваших целей, так как я предполагаю, что вы уже знакомы с C ++.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...