2017-01-31 6 views
0

Androidのファイルシステムについて、ndkの観点からちょっと混乱しています。 私はカスタムantファイルでビルドしています。今私が望むのは、私のシェーダーを含むテキストファイルを読むことだけです。
は、私の知る限り理解して:NDKのC++ファイルからのロードシェーダ

  • 資産はなく、URLまたはファイルパスを経由して、プレーンテキスト形式でアクセスすることができます< 1Mbのファイルです。私はインターネット上で、資産を使用するために、(アンドロイドスタジオのような)gradleを使用する方が良いと分かっています。

  • リソース(resディレクトリ)URLを介して、しかし、パックド形式でアクセスすることができます(1は.zipファイルからのようにそれらから抽出する必要があります)

だから私は資産を使用することにしました。アセットフォルダはどこに置く必要がありますか?私が見つけたすべての例はAndroidStudio(src/main/assets)を基準にしたものですが、src/com/normalpackage/sources.javaとjni/sources.cppを使用しています。

私は、入力として、私は含む.HPPファイルを取得します出力に資産ディレクトリ:

struct MyFile{ uchar* filepath; uchar* data; ... };

MyFile f1(filepath,data1) MyFile f2(filepath,data2) ... //or put it in std::map or something

(ソースコードでそれをコンパイルする準備ができて、データ構造にパック) 私はそれだと思いますコンパイル時間の増加による良い解決策にはなりません(将来私はシェイダーだけでなく画像やオーディオもインポートしたいと思っていますが、私はここで間違っているかもしれません(あなたはどう思いますか?)。

だから私はどうすればよいですか?

答えて

1

NDKから、AAsset_readを使用してassetsフォルダにアクセスすることができます。これが最良の方法だと思います。ここで例を見ることができます:How To Get File In Assets From Android NDK

+0

しかし、資産フォルダはどこに置くべきですか?すべてのチュートリアルはsrc/main/assetsを参照していますが、Android Studio gradle構築システム – user7428910

+0

に接続しています。AAssetManager_openのドキュメントによれば、「最上位ディレクトリを開くにはdirNameとして渡してください。だから私はそれがデフォルトの場所を開くと思う。とにかく、あなたは単に試みることができます... – yakobom

関連する問題