forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   C++ (http://forum.boolean.name/forumdisplay.php?f=22)
-   -   OpenGL ES Изобретение велосипеда (http://forum.boolean.name/showthread.php?t=17094)

pax 27.07.2012 06:50

OpenGL ES Изобретение велосипеда
 
В общем тыкался я на днях в икскод (хотел для Unity плугин написать), понял что знаний мне не хватает и решил, что изучение Obj-C хочется начать с самописного движка для OpenGL ES, но написать его хочется на С++, чтобы потом попробовать запустить его на NDK (со временем, если хватит желания). Так вот хочу попросить сообщество дать советов - на что стоит обратить внимание при разработке такого чудо велосипеда, как соединить С++ движок с Obj-C, дать ссылок по теме. Можно ли подключать С++ библиотеки (например физику) к такому гибриду? в общем прошу дать советы на любые вопросы, которые могут появится по ходу.

Всем заранее спасибо.

PS: в С++ я тоже очень начинающий, писал совсем немного на нем. Заниматься велосипедом буду потихоньку и не факт что начну сразу, хотелось бы сначала теоретически исследовать вопрос что и как.

Knightmare 27.07.2012 08:48

Ответ: OpenGL ES Изобретение велосипеда
 
Цитата:

изучение Obj-C хочется начать с самописного движка для OpenGL ES, но написать его хочется на С++
/0

Но раз пошла такая пьянка, то от obj-c потребуется только делегат приложения и GLES вьюха (инициализация GL, обработка тачей), плюс по необходимости что там тебе потребуется (акселерометр, гироскоп, геймцентр, бла-бла-бла). Весь движок можно спокойно писать на плюсах.

Для начала пойдет что-то такое: http://developer.apple.com/library/m...bjectiveC.html , потом можно книги какие-нибудь почитать.

А, ну и да, любые С++ либы прикручиваться без проблем.

pax 27.07.2012 09:17

Ответ: OpenGL ES Изобретение велосипеда
 
Вопрос по ходу: Допустим пишу движок на С++, писать его можно не в XCODE, а в любой другой IDE с компиляцией в либу, а в XCODE подключить и использовать?

Knightmare 27.07.2012 09:22

Ответ: OpenGL ES Изобретение велосипеда
 
Да, но либы только статические линкуются, поэтому проще таки Xcode и юзать. Алсо движку в либе все равно нужна как минимум вьюха, это тоже решаемо, но зощем самому себе создавать проблемы?

pax 27.07.2012 09:31

Ответ: OpenGL ES Изобретение велосипеда
 
Ну я рассматривал вариант, что ядро движка будет независимой либой, а то что касается конкретно iOS, а потом может и Android будет уже отдельно.

А cpp файлы икскод компилит? А то смотрю везде mm.

Knightmare 27.07.2012 09:33

Ответ: OpenGL ES Изобретение велосипеда
 
Компилит, mm просто поддерживает смесь obj-c и C++, m - только obj-c. В срр соответственно только С++.

jimon 27.07.2012 10:47

Ответ: OpenGL ES Изобретение велосипеда
 
pax
либы ? но зачем ? clang\llvm настолько шустрый что ~150 compile units простого цпп кода компилит секунд за 10-20

когда будешь проектировать движок то учти андроид - он теряет все opengl ресурсы (текстуры, шейдера и тд) при сворачивании\разворачивании программы

ps. ща pax узнает что селекторы obj-c связываются в рантайме :crazy: а вызов отсутствующего селектора это ошибка рантайме, а не времени компиляции :crazy:

moka 27.07.2012 14:27

Ответ: OpenGL ES Изобретение велосипеда
 
Цитата:

Сообщение от jimon (Сообщение 234474)
когда будешь проектировать движок то учти андроид - он теряет все opengl ресурсы (текстуры, шейдера и тд) при сворачивании\разворачивании программы

Новые версии уже имеют возможность это избегать, и сохранять графический процесс, сворачивая и разворачивая без потери контекста.
Так что думаю что если PAX и будет разрабатывать, то ведь не на вчерашний день, а на "после-завтра", а там уже и 2.3 почти ни у кого не останеться.

По сути ты пишешь движёк, в котором есть разные "Input'ы". Например для тачя. Если пишешь логику тача на С++ (игру), то данные о таче должны попадать в движёк сперва, и для этого пишеться некий "драйвер" под разные платформы. Это простая обёртка минимальных вещей - создание view'а, ловля input'а и отправка его в движёк, и других данных (gps, accelerometer, etc.).
Получается что берёшь твой двиг, игру, и драйвер под нужную платформу и играешь (естественно нужен будет deploy на каждую платформу отдельно чтобы всё это в одну хрень паковать и соединять).

jimon 27.07.2012 15:22

Ответ: OpenGL ES Изобретение велосипеда
 
MoKa
ваше так званное "будущее" в андроидах не наступает уже год, так что еще как минимум год 2.3 надо поддерживать, а 2.2, да, уже сдает позиции

Knightmare 27.07.2012 15:38

Ответ: OpenGL ES Изобретение велосипеда
 
Вложений: 1
Вложение 17237
Дооооо, прям уже можно брать и не поддерживать 2.х. От фанатиков ондроеда только и слышно - вот новая версия сейчас выйдет, все кааааак перейдут на нее и будет круто, можно старые и не поддерживать. А вендоры как хуй клали на них, так и кладут, скоро так и 5 версию изрыгнут, а 2.х будет еще больше половины рынка.

ffinder 27.07.2012 15:51

Ответ: OpenGL ES Изобретение велосипеда
 
Цитата:

Сообщение от pax (Сообщение 234466)
хотел для Unity плугин написать

расскажи что за плагин задумал делать?

Цитата:

Сообщение от pax (Сообщение 234466)
в С++ я тоже очень начинающий, писал совсем немного на нем. Заниматься велосипедом буду потихоньку и не факт что начну сразу, хотелось бы сначала теоретически исследовать вопрос что и как.

моё ИМХО, что Си, С++ и Обджектив Си это три вообще разных языка.
я бы начал только с ОбжЦэ, потому что два-три языка параллельно осваивать довольно нервное занятие.

почему Objective-C++ - плохо? потому что икскод не умеет его рефакторить и для него не работают тесты из коробки (яблоки всё делают для ОбжЦэ).

В ОбжЦэ появилась новая фича - Automatic Reference Counting - избавляет от необходимости руками дергать retain и release у объектов, но как всегда накладывает свои ограничения, но всё равно мегаудобно).

в общем - начни с ОбжЦэ, а так посмотришь.

HolyDel 27.07.2012 16:45

Ответ: OpenGL ES Изобретение велосипеда
 
Цитата:

почему Objective-C++ - плохо?
потомучто автор хочет в перспективе андроид. разве это не очевидно?

ffinder 27.07.2012 16:51

Ответ: OpenGL ES Изобретение велосипеда
 
Цитата:

Сообщение от HolyDel (Сообщение 234503)
потомучто автор хочет в перспективе андроид. разве это не очевидно?

это был риторический вопрос и сразу на дан него ответ мной же.
ну и да, чота я разочаровался в кроссплатформенности - это ведь как наименьшее общее кратное - приходится отбрасывать фичи, которых нету во всех поддерживаемых платформах.

pax 30.07.2012 01:26

Ответ: OpenGL ES Изобретение велосипеда
 
Цитата:

Сообщение от ffinder (Сообщение 234497)
расскажи что за плагин задумал делать?

Тут была необходимость в добавлении поддержки smaato рекламы в Unity. Писал плугин не я, а другой человек, тоже начинающий, но более легко разобравшийся в Obj-C, а я даже заголовок от smaato подключить не смог :-D

Цитата:

Сообщение от ffinder (Сообщение 234497)
В ОбжЦэ появилась новая фича - Automatic Reference Counting - избавляет от необходимости руками дергать retain и release у объектов, но как всегда накладывает свои ограничения, но всё равно мегаудобно).

И тут выясняется, что Unity не создает ARC, который используется в smaato, на чем в общем интеграция пока и закончилась.

Ну и я спешить не буду, времени свободного все равно мало. Может начну писать этот двиг не скоро еще, не загадываю. Спасибо всем за советы! Есть пища для размышлений теперь.

PS: если у кого есть желание дальше пообсуждать вопрос iOS/Android движка, то было бы интересно почитать :-)

pax 06.08.2012 12:44

Ответ: OpenGL ES Изобретение велосипеда
 
Появилось немного времени покопаться в интернетах на тему математической библиотеки для GLES (не хочу писать свою). Нашел следующие варианты:
1. GLM
2. CML
3. http://eigen.tuxfamily.org/index.php?title=Main_Page

Первая в стиле OpenGL API, что не очень радует, третья шаблонная, вторая вроде бы нормальная, но что-то не нравится она мне. Хочется математику, как в Unity:
PHP код:

Vector3 from = new Vector3(0f0f0f);
Vector3 to = new Vector3(1f1f1f);
Vector3 pos Vector2.Lerp(fromto0.5f

Есть ли еще альтернативы? Причем хотелось бы, чтобы в библиотеке по умолчанию использовался GLShort, GLInt, GLFloat и т.д.


Часовой пояс GMT +4, время: 21:16.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot