1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > android jni assets文件路径 Android NDK从Assets目录下读取shader文件 ? 琢 · 磨

android jni assets文件路径 Android NDK从Assets目录下读取shader文件 ? 琢 · 磨

时间:2022-01-24 22:16:53

相关推荐

android jni assets文件路径 Android NDK从Assets目录下读取shader文件 ? 琢 · 磨

好久没写文章了,最近花了几天时间来学习Android NDK下的OpenGL ES 2.0编程,其实有Opengl基础的人转战ES是很容易上手的,特别是NDK用的也是c/c++。在写shader的时候,我们大都习惯从外部读取shader文件,所以我的想法是把shader文件打包进apk中安装时自动释放然后找到文件路径,在ndk中指定我要读的文件名,然后把读取内容交给ndk来处理。

这里关于文件定位有三种方法

第一种是把文件释放到类似sd卡或者内置存储内存这些存储器上的某个固定路径,然后在读取文件,这种比较简单,缺点是shader文件直接暴露给用户了。

第二种是把shader文件放入res/raw目录下,这样在R.java中就有了shader文件的资源号,可以通过资源号直接读取文件,然后传递给ndk部分,这种方法非常好,shader文件不会暴露给用户,但是缺点是资源编号只能在java部分引用,也就是说读取哪些文件实在java部分指定的,当然可以在ndk部分可以加一些处理来实现在ndk中指定我要读取的文件,但是就有点略显繁琐了。

所以我们采用第三种方法,就是利用android自带的Assets目录来实现。

1. 首先在java代码中任意一个类中实现一个静态方法 getAssetContents(),这里我的例子把这个方法定义在了

org.mixsec.wzs.cube下的GL2CubeJNILib类中了, 注意这里包和类的名字后面ndk部分会用到。

代码如下

publicstaticAssetManagerassMgr;

publicstaticbyte[]getAssetContents(Stringpath)throwsIOExcep

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。