Как перенести игру для ПК на Android, написанную на C ++ - PullRequest
3 голосов
/ 21 февраля 2011

Я хочу создать простую игру, такую ​​как Space Invaders. Я знаю, что могу использовать Android NDK, но мне нужно портировать библиотеки, которые я использую. Я не могу использовать сторонние проприетарные библиотеки.

Я буду использовать OpenGL, но OpenGL API кажется другим на Android. Я должен использовать текстуры JPEG и PNG и писать тексты. Могу ли я скомпилировать libjpeg, libpng и freetype для Android?

У меня не может быть конкретной реализации игрового движка (C ++) и процедур рендеринга (C ++ и OpenGL), потому что это сложная часть.

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

Я использую SDL и его расширения для аудио на ПК, но он прост в использовании. Я могу использовать определенные аудио библиотеки для Android.

Спасибо

1 Ответ

5 голосов
/ 21 февраля 2011

Могу ли я скомпилировать libjpeg, libpng и freetype для Android?

Да, вам придется перекомпилировать все нативные библиотеки специально для Android.Да, вам нужен исходный код для всех сторонних собственных библиотек, которые вы планируете использовать просто потому, что обычно, когда мы компилируем и связываем эти библиотеки за пределами Android, они связаны с glibc, но, к сожалению, Android не использует glibc из-за проблем с лицензией и производительностью.Android использует разбавленную версию glibc под названием libc.Он имеет соответствующие имена символов для glibc для большинства обычных функций.Но, насколько я знаю, libc не имеет какой-либо функциональности, связанной со строками, и определенно не имеет поддержки posix.Если ваши нативные библиотеки используют какую-либо устаревшую функциональность, вам придется найти обходной путь для них, используя альтернативную функциональность, поддерживаемую libc, и соответствующим образом кодируя свои библиотеки.

Кроме того, как вы правильно заметили, вам придется использовать NDK для взаимодействия Java (Android app / fwk) с собственным миром (C ++).

Хотя это звучит довольно просто, по моему опыту, компиляция нативных библиотек на Android (портирование Android) традиционно занимала много времени без гарантии успеха.

...