从 ndk 的角度来看,我对 Android 中的文件系统有点困惑。
我正在使用自定义 ant 文件构建它。我现在只想读取一些包含我的着色器的文本文件。
据我了解:
Assets 是小于 1Mb 的文件,可以纯文本形式访问,但不能通过 url 或文件路径访问。在网上查到assets使用gradle(像在android studio中)比较好。
可以通过 url 访问资源(res 目录),但以压缩形式(必须像从 .zip 中一样从中提取)
所以我决定使用 Assets 。我应该把 Assets 文件夹放在哪里?我发现的所有示例都与 AndroidStudio (src/main/assets) 有关,但我使用 src/com/normalpackage/sources.java 和 jni/sources.cpp
我什至考虑创建一个程序,将我的 Assets 目录作为输入,并在输出中得到一个 .hpp 文件,其中包含:
构造我的文件{
uchar* 文件路径;
uchar* 数据;
...
};
MyFile f1(文件路径,data1)
我的文件 f2(文件路径,数据 2)
...
//或者放在std::map之类的地方
(封装在数据结构中,准备用源代码编译) 我认为这不是一个好的解决方案,因为会增加编译时间(将来我不仅想导入着色器,还想导入图像或音频),但我在这里可能是错的(你怎么看?)。
那么,我应该怎么选择呢?
最佳答案
在 NDK 中,您可以使用 AAsset_read
访问 Assets 文件夹,我认为这将是最好的方法。您可以在这里查看示例:How To Get File In Assets From Android NDK
关于android - NDK c++ 从文件 Android 加载着色器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41968547/