我正在三星 Galaxy Nexus 上使用 Android 进行一些 OpenGL ES 2.0 编码。
我已经根据 Android OpenGL 教程实现了 MyRenderer 类,但我希望能够将一些调试信息返回到 MainActivity,例如着色器编译器失败时的错误消息。不幸的是,到目前为止,我尝试将错误消息返回到主要活动的所有方法都失败了。
起初我打算让渲染类本身使用 AlertDialogBuilder 类弹出一个警告对话框,但由于 GLSurfaceView.renderer 的类型不正确,这显然不起作用。而且由于 GLSurfaceView.renderer 不是一个活动,我也不能让它产生一个活动来显示信息。
然后我的方法是让我的 MainActivity 实现一个名为 AlertReporter 的接口,该接口只有一个方法:
public interface AlertCallback {
void alertAndDie(String alertString);
}
我已经在我的 MainActivity 中实现了该方法,但是每当我让该方法执行任何操作(生成警报框、创建新的文本框活动等)时,程序就会崩溃。我假设(并且可能是错误的)这是因为我正在从渲染线程调用 MainActivity 中的一个方法(GLSurfaceView 在创建我的渲染器时会产生什么)。
长话短说,我的问题是:将此错误信息返回到 MainActivity 线程以便我可以显示它的最佳做法是什么?
作为一个附带问题,渲染器中的 onCreateSurface 方法是否是处理我的所有 openGL 初始化(例如着色器编译)的最佳位置?