Android:如何使用ndk从c ++代码中读取游戏资产文件

我正在使用irrlicht c ++ 3D图形引擎端口创建一个游戏到Android平台。 图形引擎是用c ++编写的。 我需要能够从c ++代码加载网格和纹理等。 我目前的计划是将所有游戏资产文件放在res / raw目录或assets目录中,然后在启动时将这些文件复制到sdcard,以便可以从irrlicht c ++代码访问它们。 这是使用c ++访问游戏媒体文件的最佳方法吗?

Solutions Collecting From Web of "Android:如何使用ndk从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

如果我知道a,我可以给你更具体的建议你需要访问多少资源b)你将遇到的最大资源的大小,更具体地说,你所有的资源都是<1MB大小的未压缩?

理论上,您可以将InputStream传递给本机C ++代码并让它调用其方法。 你甚至可以在这些之上实现一个istream。 但是,我不认为这就是你所追求的。

请记住,APK中的资产文件不会存储为文件。 它们被压缩和存档 – 一个APK实际上是一个重命名的ZIP文件。 因此,我建议将资产从Java中复制到数据文件夹中,然后将该副本的文件名传递给C ++。

顺便说一下,这完全排除了对这些资产的写作。