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

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

Solutions Collecting From Web of "Android:如何使用ndk从c ++代码中读取游戏资产文件"

有几种方法可以做到这一点…他们每个人都有自己的局限性,所以如果不了解你的情况,我不能给出一个好的build议。 以下是一些可以帮助你的build议的链接:

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

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

理论上讲,你可以将InputStream传递给本地C ++代码,并调用它的方法。 你甚至可以在这些之上实现一个istream。 不过,我不认为这是你以后的事情。

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

顺便说一句,这完全排除了写这些资产。