Собственно, на чем предпочтительнее разрабатывать 3D приложения с использованием OGL?
С одной стороны Google не рекомендует использовать NDK, хотя не совсем ясно - почему. С другой стороны та же Google для приложений с использованием OGL рекомедует пользоваться NDK.
Интересно, сильно ли скажется на производительности, если я буду писать 3D приложения на Java? Или лучше сражу взяться за изучение NDK?
Если будешь работать с нативными буферами, то на java это будет очень медленно.
У dalvik и вызовы методов не очень быстрые, но просто для отрисовки меша не так уж и много методов вызывается.
У java еще минус это поддержка opengl es 2.0 только с версии 2.3.
Если серьезная 3д игра не планируется, то думаю java сойдет.
Но если придется писать часть на java, а часть на с++, то лучше уж полностью перейти на с++. Помница я намучился смешивая с++ и java.
Но и на с++ писать не удобно из-за консольного cygwin и ручной прописки всех компилируемых файлов в Android.mk.
А лучше бери Unity3D пока там бесплатно лицензии раздают.
WISHMASTER35
> и ручной прописки всех компилируемых файлов в Android.mk.
LOCAL_SRC_FILES += $(wildcard folder/*.cpp)
> Помница я намучился смешивая с++ и java. Но и на с++ писать не удобно из-за консольного cygwin
в эклипсе можно настроить проект что компилировать и собирать будет автоматом, ошибки компиляции выводить в консоль эклипса. Единственный минус для меня отладка. Насчет производительности в java версии gl fps адаптивный, если к примеру ты рисуешь только бэкграунд фпс будет довольно не высок, если добавить движущиеся элементы то сразу подскочит. Но выше 22-25 поднять на java не выходило, видимо спецом для экономии батареи ограниичивают, мешает понять какой еще запас производительности остался. В нативе fps для тех же сцен подрос в 1.5-2 раза, не считая совсем простых в них до 4 раз.
Есть же код GLSurfaceView на гитхабе (EGL + threading sync).
Там нет ограничения FPS.
Плюс всегда можно самому реализовать производный от SurfaceView аналог GLSurfaceView и рисовать в UI-потоке.
WISHMASTER35
> Если серьезная 3д игра не планируется, то думаю java сойдет.
Не. Для серьезной игры я конечно же взял бы Unity (бесплатную лицензию для андроида я урвал :). Меня на данный момент интересует разработка виджетов и анимированных обоев.
> Но и на с++ писать не удобно из-за консольного cygwin и ручной прописки всех
> компилируемых файлов в Android.mk.
Можно же взять любую IDE, поддерживающую кастомную настройку компиляторов. К Code::Blocks, к примеру, можно прикрутить почти все, что угодно. Я даже компилятор HLSL подключал, с выводом предупреждений и ошибок в консоль.
Кстати, есть ведь еще RenderScript. А каковы его перспективы?
Тема в архиве.