我在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()中的断点和渲染器中的其他方法永远不会被命中,也不会渲染任何内容。我如何弄清楚这里发生了什么?
答案 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">