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