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

StackOverflow https://stackoverflow.com/questions/2278359

  •  21-09-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение

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

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

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

Другие советы

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top