Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > C++

Ответ
 
Опции темы
Старый 27.07.2012, 06:50   #1
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
OpenGL ES Изобретение велосипеда

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

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

PS: в С++ я тоже очень начинающий, писал совсем немного на нем. Заниматься велосипедом буду потихоньку и не факт что начну сразу, хотелось бы сначала теоретически исследовать вопрос что и как.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 27.07.2012, 08:48   #2
Knightmare
Дэвелопер
 
Регистрация: 14.02.2007
Сообщений: 1,471
Написано 824 полезных сообщений
(для 2,920 пользователей)
Ответ: OpenGL ES Изобретение велосипеда

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

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

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

А, ну и да, любые С++ либы прикручиваться без проблем.
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо Knightmare за это полезное сообщение:
HolyDel (27.07.2012), pax (27.07.2012)
Старый 27.07.2012, 09:17   #3
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: OpenGL ES Изобретение велосипеда

Вопрос по ходу: Допустим пишу движок на С++, писать его можно не в XCODE, а в любой другой IDE с компиляцией в либу, а в XCODE подключить и использовать?
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 27.07.2012, 09:22   #4
Knightmare
Дэвелопер
 
Регистрация: 14.02.2007
Сообщений: 1,471
Написано 824 полезных сообщений
(для 2,920 пользователей)
Ответ: OpenGL ES Изобретение велосипеда

Да, но либы только статические линкуются, поэтому проще таки Xcode и юзать. Алсо движку в либе все равно нужна как минимум вьюха, это тоже решаемо, но зощем самому себе создавать проблемы?
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
pax (27.07.2012)
Старый 27.07.2012, 09:31   #5
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: OpenGL ES Изобретение велосипеда

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

А cpp файлы икскод компилит? А то смотрю везде mm.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 27.07.2012, 09:33   #6
Knightmare
Дэвелопер
 
Регистрация: 14.02.2007
Сообщений: 1,471
Написано 824 полезных сообщений
(для 2,920 пользователей)
Ответ: OpenGL ES Изобретение велосипеда

Компилит, mm просто поддерживает смесь obj-c и C++, m - только obj-c. В срр соответственно только С++.
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо Knightmare за это полезное сообщение:
HolyDel (27.07.2012), pax (27.07.2012)
Старый 27.07.2012, 10:47   #7
jimon
 
Сообщений: n/a
Ответ: OpenGL ES Изобретение велосипеда

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

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

ps. ща pax узнает что селекторы obj-c связываются в рантайме а вызов отсутствующего селектора это ошибка рантайме, а не времени компиляции
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо за это полезное сообщение:
HolyDel (27.07.2012), Mhyhr (27.07.2012), pax (30.07.2012)
Старый 27.07.2012, 14:27   #8
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: OpenGL ES Изобретение велосипеда

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

По сути ты пишешь движёк, в котором есть разные "Input'ы". Например для тачя. Если пишешь логику тача на С++ (игру), то данные о таче должны попадать в движёк сперва, и для этого пишеться некий "драйвер" под разные платформы. Это простая обёртка минимальных вещей - создание view'а, ловля input'а и отправка его в движёк, и других данных (gps, accelerometer, etc.).
Получается что берёшь твой двиг, игру, и драйвер под нужную платформу и играешь (естественно нужен будет deploy на каждую платформу отдельно чтобы всё это в одну хрень паковать и соединять).
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо moka за это полезное сообщение:
HolyDel (27.07.2012), pax (30.07.2012)
Старый 27.07.2012, 15:22   #9
jimon
 
Сообщений: n/a
Ответ: OpenGL ES Изобретение велосипеда

MoKa
ваше так званное "будущее" в андроидах не наступает уже год, так что еще как минимум год 2.3 надо поддерживать, а 2.2, да, уже сдает позиции
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
pax (30.07.2012)
Старый 27.07.2012, 15:38   #10
Knightmare
Дэвелопер
 
Регистрация: 14.02.2007
Сообщений: 1,471
Написано 824 полезных сообщений
(для 2,920 пользователей)
Ответ: OpenGL ES Изобретение велосипеда

Нажмите на изображение для увеличения
Название: chart.png
Просмотров: 920
Размер:	25.6 Кб
ID:	17237
Дооооо, прям уже можно брать и не поддерживать 2.х. От фанатиков ондроеда только и слышно - вот новая версия сейчас выйдет, все кааааак перейдут на нее и будет круто, можно старые и не поддерживать. А вендоры как хуй клали на них, так и кладут, скоро так и 5 версию изрыгнут, а 2.х будет еще больше половины рынка.
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо Knightmare за это полезное сообщение:
pax (30.07.2012), SBJoker (27.07.2012)
Старый 27.07.2012, 15:51   #11
ffinder
Дэвелопер
 
Аватар для ffinder
 
Регистрация: 10.09.2007
Сообщений: 1,442
Написано 793 полезных сообщений
(для 1,460 пользователей)
Ответ: OpenGL ES Изобретение велосипеда

Сообщение от pax Посмотреть сообщение
хотел для Unity плугин написать
расскажи что за плагин задумал делать?

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

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

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

в общем - начни с ОбжЦэ, а так посмотришь.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
pax (30.07.2012)
Старый 27.07.2012, 16:45   #12
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: OpenGL ES Изобретение велосипеда

почему Objective-C++ - плохо?
потомучто автор хочет в перспективе андроид. разве это не очевидно?
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
pax (30.07.2012)
Старый 27.07.2012, 16:51   #13
ffinder
Дэвелопер
 
Аватар для ffinder
 
Регистрация: 10.09.2007
Сообщений: 1,442
Написано 793 полезных сообщений
(для 1,460 пользователей)
Ответ: OpenGL ES Изобретение велосипеда

Сообщение от HolyDel Посмотреть сообщение
потомучто автор хочет в перспективе андроид. разве это не очевидно?
это был риторический вопрос и сразу на дан него ответ мной же.
ну и да, чота я разочаровался в кроссплатформенности - это ведь как наименьшее общее кратное - приходится отбрасывать фичи, которых нету во всех поддерживаемых платформах.
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо ffinder за это полезное сообщение:
HolyDel (30.07.2012), pax (30.07.2012)
Старый 30.07.2012, 01:26   #14
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: OpenGL ES Изобретение велосипеда

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

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

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

PS: если у кого есть желание дальше пообсуждать вопрос iOS/Android движка, то было бы интересно почитать
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 06.08.2012, 12:44   #15
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: OpenGL ES Изобретение велосипеда

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

Первая в стиле OpenGL API, что не очень радует, третья шаблонная, вторая вроде бы нормальная, но что-то не нравится она мне. Хочется математику, как в Unity:
Vector3 from = new Vector3(0f0f0f);
Vector3 to = new Vector3(1f1f1f);
Vector3 pos Vector2.Lerp(fromto0.5f
Есть ли еще альтернативы? Причем хотелось бы, чтобы в библиотеке по умолчанию использовался GLShort, GLInt, GLFloat и т.д.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com