GlSurfaceView渲染器未被调用

时间:2011-12-14 02:28:16

标签: android opengl-es

我在Android上学习OpenGL。我编写了一个应用程序,其中GlSurfaceView在布局XML(片段...)

中声明
  <FrameLayout
  android:id="@+id/framelay"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">
     <com.nelsondev.myha3ogl.M3View
     android:id="@+id/m3SurfView"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"/>
  </FrameLayout> 

...并在其构造函数中设置了渲染器:

    public M3View(Context context, AttributeSet attrs) {
        super(context, attrs);
        renderer = new M3Renderer(context);
        setRenderer(renderer);
   }

当活动收到 onResume / onPause 时,它正在调用GlSurfaceView方法。 但渲染器永远不会被启动! onSurfaceCreated()中的断点和渲染器中的其他方法永远不会被命中,也不会渲染任何内容。我如何弄清楚这里发生了什么?

1 个答案:

答案 0 :(得分:3)

(这个答案来自你的另一个问题:Trying to start renderer from GLSurfaceView declared in layout

您未指定LinearLayout方向,因此默认设置为horizontal。这意味着您的GLSurfaceView位于屏幕之外(因为您将按钮宽度设置为fill_parent)。

只需将以下属性添加到LinearLayout:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">