我正在尝试为 android 创建一个简单的 3-D 应用程序,它将在 OpenGL 视图之上有一个额外的视图(很像 API 演示中的 SurfaceViewOverlay 示例)。我在尝试使用扩展的 GLSurfaceView 类实现该方法时遇到了问题。我已经设置了一个示例,我正在尝试将此演示与 API Oerlay 演示结合起来。如果我尝试像这样投射到 Martin 的 VortexView 对象(替换 API 演示中的第 44-46 行)
VortexView glSurfaceView=
(VortexView) findViewById(R.id.glsurfaceview);
我收到一个 ClassCastException 错误(这是可以理解的,因为我假设强制转换是相当具体的)所以我想我正在寻找一种方法来将视图从 GLSurfaceView 实例转移到新的子类或将渲染表面设置为创建子类后的 XML 定义视图。
编辑:我已经取得了一些进展,试图让它工作-在视图 XML 使用的 API 示例中(来自 ApiDemos/res/layout/surface_view_overlay.xml)
<android.opengl.GLSurfaceView android:id="@+id/glsurfaceview"
android:layout_width="match_parent"
android:layout_height="match_parent" />
如果我将该元素更改为
com.domain.project.VortexView ,它将使用上面的代码正确执行转换,但在遇到 surfaceCreated 和 surfaceChanged 例程时会生成空指针异常(我认为这是基于 GLThread 类中的调用方法GLSurfaceView 类中的行号)。所以也许我应该改变这个问题 - 如何在不在 surfaceCreated 和 surfaceChanged 上生成 NullPointerExceptions 的情况下实现 GLSurfaceView 的扩展,或者如何在没有 GLSurfaceView.java 的源代码的情况下调试它们?