android - NDK c++ 从文件 Android 加载着色器

标签 android c++ android-ndk

从 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/

相关文章:

Android Retrofit 2 文件上传不起作用

android - 为 Android 构建 FIPS 模块

android - Make.exe 访问被拒绝

Android NDK 版本代码方案,用于按架构发布 APK

android - android中的简单单选按钮 Action

android - 如何在android中制作实时更新的评分栏?

android - monodroid 从 Assets 中播放视频

c++ - C++ 中的 BST 插入

c++ - 获取笔记本电脑的电池信息并将其放入 C++ 中的标签中

c++ - strdup 导致堆损坏