Подтвердить что ты не робот

Android: как сделать файлы игровых активов доступными для чтения из кода С++ с помощью ndk

Я создаю игру, используя графический движок irrlicht С++ 3D для платформы Android. Графический движок написан на С++. Мне нужно иметь возможность загружать сетки и текстуры и т.д. Из кода С++. Мой текущий план состоит в том, чтобы поместить все файлы игрового актива в каталог res/raw или каталог активов, а затем при запуске скопировать эти файлы на SD-карту, чтобы они были доступны из кода irrlicht С++. Это лучший способ сделать игровые медиа файлы доступными из С++?

4b9b3361

Ответ 1

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

http://groups.google.com/group/android-ndk/browse_thread/thread/842ca9d7d82995b0

http://groups.google.com/group/android-ndk/browse_thread/thread/4e25a5dfd46f8fea/1269bcd10bdb066d?lnk=gst&q=apk+compressed#1269bcd10bdb066d

Я могу дать вам более конкретные предложения, если бы я знал: a) Сколько ресурсов вам нужно для доступа b) Размер самого большого ресурса, с которым вы столкнетесь, точнее, все ваши ресурсы < 1 МБ в размере несжатого?

Ответ 2

В теории вы можете передать InputStream на собственный С++-код и вызвать его методы. Вы даже можете реализовать istream поверх них. Тем не менее, я не думаю, что это то, что вам нужно.

Имейте в виду, что файлы активов в APK не сохраняются, как файлы, а. Они сжаты и архивированы - APK на самом деле является переименованным ZIP файлом. Поэтому я рекомендую скопировать ресурс в папку с данными из Java, а затем передать имя файла этой копии на С++.

Это, кстати, полностью исключает запись этих активов.