Какой лучший язык для графического программирования в реальном времени на Android?

Некоторые поисковые системы Google заставили меня поверить, что C ++ – лучший язык для 2D-графического программирования в реальном времени, но поскольку Android является Java-совместимым, это лучший вариант? Или нам факт, что я должен использовать NDK, чтобы замедлить это или что-то еще? Моя программа также имеет множество научных вычислений, и я знаю, что C ++ является лучшим / быстрым для этого …

Я никогда ничего не делал с Android, поэтому я действительно беспомощен прямо сейчас. Если я просто ошибаюсь, пожалуйста, дайте мне другие предложения … Некоторые другие словари, с которыми я столкнулся, это OpenGL (с которыми у меня есть опыт, но это больше для 3D, так?) И Canvas (не Довольно получить это)? Если бы я мог получить доступ к GPU-подобным возможностям, это было бы здорово.

Приложения Android написаны Java, да – однако Android NDK позволяет писать критически важные для производительности разделы вашей программы на C или C ++. С сайта Android NDK,

Android NDK – это вспомогательный инструмент для Android SDK, который позволяет создавать критически важные для ваших приложений части в собственном коде. Он предоставляет заголовки и библиотеки, которые позволяют создавать операции, обрабатывать ввод пользователей, использовать аппаратные датчики, получать доступ к ресурсам приложений и т. Д. При программировании на C или C ++.

Тем не менее, использование NDK соответствующим образом, скорее всего, не замедлит вашу программу.

OpenGL работает для 3D и 2D графики – если вас интересует только 2D, вы захотите посмотреть на использование ортографической проекции – см. GlOrtho для получения дополнительной информации. С другой стороны, Android Canvas – это метод Java для рисования растровой графики на экране. Это позволит вам делать 2D-графику, но медленнее (и с частыми перерывами от Android Garbage Collector).

Имейте в виду, что если вы хотите использовать C ++, с момента написания, нет реализации STL. Есть, однако, неофициальные порты, которые обеспечивают большую часть функциональности. STLPort – это тот, который я пробовал с некоторым успехом. Самая большая причина для перевода кода на C / C ++ связана с перерывами из Android Java Garbage Collector – если вы не слишком осторожны с вашим кодом, он будет прерывать вашу программу часто, чтобы очистить объекты, которые вы оставили. На практике это может радикально изменить рамки игры или моделирования.

Все, что сказал, я настоятельно рекомендую вам заглянуть в один из немногих движков Android с открытым исходным кодом, которые появляются. Самый лучший, который я пробовал, – это libGDX . Он заботится обо всех беспорядочных деталях NDK и позволяет вам кодировать вашу игру / симуляцию исключительно на Java. Он автоматически запускает тяжелые части игрового движка в собственном коде, чтобы получить максимально возможную производительность с легкостью кодирования в Java. Лучше всего, вы можете написать свой код приложения один раз и автоматически запускать его на Windows, Linux, OSX и Android, что значительно упрощает тестирование ваших приложений, намного проще, чем с помощью эмулятора Android.

Если вы действительно хотите сами заглянуть в NDK, или вам нужно отлично контролировать то, что делает OpenGL, я бы порекомендовал вам загрузить Android SDK и NDK, настроить eclipse, а затем начать с образцов NDK. Существует демо-версия OpenGL, в которой показано, как настроить все настройки. Еще одной хорошей отправной точкой будет проект Google SpinningCube .

EDIT: Я не совсем уверен, что вы подразумеваете под «GPU-подобными возможностями», но с помощью libGDX вы можете скомпилировать вершинные и фрагментарные шейдеры в OpenGL ES 2.0 – вы можете использовать это для выполнения неловко параллельного кода с использованием графического процессора устройства.

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

Преждевременная оптимизация – это корень всего зла. – Кнут

Intereting Posts