Я создаю игру, используя графический движок irrlicht С++ 3D для платформы Android. Графический движок написан на С++. Мне нужно иметь возможность загружать сетки и текстуры и т.д. Из кода С++. Мой текущий план состоит в том, чтобы поместить все файлы игрового актива в каталог res/raw или каталог активов, а затем при запуске скопировать эти файлы на SD-карту, чтобы они были доступны из кода irrlicht С++. Это лучший способ сделать игровые медиа файлы доступными из С++?
Android: как сделать файлы игровых активов доступными для чтения из кода С++ с помощью ndk
Ответ 1
Есть несколько способов сделать это... у каждого из них свои ограничения, поэтому я не могу дать хорошую рекомендацию, не зная больше о вашей ситуации. Вот некоторые ссылки на дискуссии с некоторыми советами, которые могут вам помочь:
http://groups.google.com/group/android-ndk/browse_thread/thread/842ca9d7d82995b0
Я могу дать вам более конкретные предложения, если бы я знал: a) Сколько ресурсов вам нужно для доступа b) Размер самого большого ресурса, с которым вы столкнетесь, точнее, все ваши ресурсы < 1 МБ в размере несжатого?
Ответ 2
В теории вы можете передать InputStream на собственный С++-код и вызвать его методы. Вы даже можете реализовать istream поверх них. Тем не менее, я не думаю, что это то, что вам нужно.
Имейте в виду, что файлы активов в APK не сохраняются, как файлы, а. Они сжаты и архивированы - APK на самом деле является переименованным ZIP файлом. Поэтому я рекомендую скопировать ресурс в папку с данными из Java, а затем передать имя файла этой копии на С++.
Это, кстати, полностью исключает запись этих активов.