私は現在、opengl ES2 を使用してライブ背景を作成することに固執しています。
レンダラー内で、リソース フォルダーからテクスチャとシェーダーにアクセスしたいのですが、その方法が見つかりません。
これに対する私の現在の試みは、クラッシュするだけでした。
return new SurfaceRenderer((Activity) this.getApplicationContext(), WallpaperService.this);
これは、苦労している SurfaceRenderer コンストラクターの最初のパラメーターです。
後でこれらの変数は、次のようにファイルにアクセスするために使用されます。
final int resVertex = activity.getResources().getIdentifier(input+"_vertexshader","raw", activity.getPackageName());
int resID = activity.getResources().getIdentifier(path,"raw", activity.getPackageName());
InputStream inputStream = activity.getResources().openRawResource(resID);
等..
activity は SurfaceRenderer コンストラクターの最初のパラメーターで、ctx は 2 番目のパラメーターです。
これに対する解決策はありますか?
編集: 解決策を実装しようとしていますが、まだ問題があります!
これは私のレンダラーコンストラクターです:
public SurfaceRenderer(GLWallpaperService activity, Context ctx) {
this.activity = activity;
cc = activity;
shaderlib = new ShaderLib(activity, ctx);
}
これは、アクティビティをシェーダー作成オブジェクトに転送するために使用され、最終的にこれを実行します:
inputStream = activity.getContext().getAssets().open(filename);
利用可能な getcontext 関数はありません。作成しようとすると、このコマンドで nullpointer になるだけです。解決策はありますか?