我正在使用 irrlicht c++ 3D 图形引擎端口创建一个游戏到 android 平台。图形引擎是用 C++ 编写的。我需要能够从 C++ 代码加载网格和纹理等。我目前的计划是将所有游戏资产文件放在 res/raw 目录或 assets 目录中,然后在启动时将这些文件复制到 sdcard,以便可以从 irrlicht c++ 代码访问它们。这是使游戏媒体文件可从 C++ 访问的最佳方式吗?
问问题
15864 次
2 回答
9
有几种方法可以做到这一点......它们都有自己的局限性,所以如果不了解您的情况,我无法给出好的建议。以下是一些讨论链接以及一些可能对您有所帮助的建议:
http://groups.google.com/group/android-ndk/browse_thread/thread/842ca9d7d82995b0
如果我知道,我可以给您更具体的建议 a) 您需要访问多少资源 b) 您将遇到的最大资源的大小,更具体地说,您的所有资源的大小都小于 1MB 吗?
于 2010-02-17T19:52:21.197 回答
1
理论上,您可以将 InputStream 传递给本机 C++ 代码并让它调用其方法。您甚至可以在这些之上实现 istream。但是,我不认为这是你所追求的。
请记住,APK 中的资产文件不会存储为文件。它们被压缩和存档 - APK 实际上是重命名的 ZIP 文件。因此,我建议将资产从 Java 中复制到数据文件夹中,然后将该副本的文件名传递给 C++。
顺便说一句,这完全排除了写入这些资产的可能性。
于 2010-06-22T14:19:29.483 回答