AndroidФорумОбщее

OpenGL. Java или NDK? Или RenderScript?

#0
19:58, 16 мар 2012

Собственно, на чем предпочтительнее разрабатывать 3D приложения с использованием OGL?

С одной стороны Google не рекомендует использовать NDK, хотя не совсем ясно - почему. С другой стороны та же Google для приложений с использованием OGL рекомедует пользоваться NDK.

Интересно, сильно ли скажется на производительности, если я буду писать 3D приложения на Java? Или лучше сражу взяться за изучение NDK?

#1
22:27, 16 мар 2012

Если будешь работать с нативными буферами, то на java это будет очень медленно.
У dalvik и вызовы методов не очень быстрые, но просто для отрисовки меша не так уж и много методов вызывается.
У java еще минус это поддержка opengl es 2.0 только с версии 2.3.
Если серьезная 3д игра не планируется, то думаю java сойдет.
Но если придется писать часть на java, а часть на с++, то лучше уж полностью перейти на с++. Помница я намучился смешивая с++ и java.
Но и на с++ писать не удобно из-за консольного cygwin и ручной прописки всех компилируемых файлов в Android.mk.
А лучше бери Unity3D пока там бесплатно лицензии раздают.

#2
0:56, 17 мар 2012

WISHMASTER35
> и ручной прописки всех компилируемых файлов в Android.mk.
LOCAL_SRC_FILES += $(wildcard folder/*.cpp)

#3
1:25, 17 мар 2012

> Помница я намучился смешивая с++ и java. Но и на с++ писать не удобно из-за консольного cygwin
в эклипсе можно настроить проект что компилировать и собирать будет автоматом, ошибки компиляции выводить в консоль эклипса. Единственный минус для меня отладка. Насчет производительности в java версии gl fps адаптивный, если к примеру ты рисуешь только бэкграунд фпс будет довольно не высок, если добавить движущиеся элементы то сразу подскочит. Но выше 22-25 поднять на java не выходило, видимо спецом для экономии батареи ограниичивают, мешает понять какой еще запас производительности остался. В нативе fps для тех же сцен подрос в 1.5-2 раза, не считая совсем простых в них до 4 раз.

#4
13:13, 17 мар 2012

Есть же код GLSurfaceView на гитхабе (EGL + threading sync).
Там нет ограничения FPS.
Плюс всегда можно самому реализовать производный от SurfaceView аналог GLSurfaceView и рисовать в UI-потоке.

#5
13:18, 17 мар 2012

WISHMASTER35
> Если серьезная 3д игра не планируется, то думаю java сойдет.
Не. Для серьезной игры я конечно же взял бы Unity (бесплатную лицензию для андроида я урвал :). Меня на данный момент интересует разработка виджетов и анимированных обоев.

> Но и на с++ писать не удобно из-за консольного cygwin и ручной прописки всех
> компилируемых файлов в Android.mk.
Можно же взять любую IDE, поддерживающую кастомную настройку компиляторов. К Code::Blocks, к примеру, можно прикрутить почти все, что угодно. Я даже компилятор HLSL подключал, с выводом предупреждений и ошибок в консоль.

Кстати, есть ведь еще RenderScript. А каковы его перспективы?

AndroidФорумОбщее

Тема в архиве.