Samsung Galaxy Nexus で Android を使用して OpenGL ES 2.0 コーディングを行っています。
Android OpenGL チュートリアルに従って MyRenderer クラスを実装しましたが、シェーダー コンパイラが失敗した場合のエラー メッセージなど、いくつかのデバッグ情報を MainActivity に戻すことができるようにしたいと考えています。残念ながら、これまでにエラー メッセージをメイン アクティビティに戻すために試みたすべてのアプローチは失敗しました。
最初は、AlertDialogBuilder クラスを使用して、レンダリング クラス自体が警告ダイアログ ボックスをポップアップ表示するだけのつもりでしたが、GLSurfaceView.renderer が適切な型ではないため、明らかにうまくいきませんでした。また、GLSurfaceView.renderer はアクティビティではないため、情報を表示するアクティビティを生成することもできませんでした。
私のアプローチは、MainActivity に、メソッドが 1 つしかない AlertReporter というインターフェイスを実装させることでした。
public interface AlertCallback {
void alertAndDie(String alertString);
}
MainActivity にメソッドを実装しましたが、メソッドに何かをさせるたびに (アラート ボックスの生成、新しいテキスト ボックス アクティビティの作成など)、プログラムがクラッシュします。これは、レンダリング スレッドから MainActivity のメソッドを呼び出しているためだと思います (間違っている可能性もあります) (レンダラーを作成するときに GLSurfaceView が生成するもの)。
簡単に言うと、私の質問は次のとおりです。このエラー情報を MainActivity スレッドに戻して表示できるようにするためのベスト プラクティスは何ですか?
副次的な質問として、レンダラーの onCreateSurface メソッドは、シェーダー コンパイルなどのすべての openGL 初期化を処理するのに最適な場所ですか?