2011-12-14 3 views
0

Я изучаю OpenGL на Android. Я написал приложение, где GlSurfaceView объявлен в XML макет (фрагмент ...)GlSurfaceView Renderer не называется

<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

На самом деле, я только что проверил, и я думаю, что мой ответ на предыдущий вопрос был неправ, и что на самом деле, начать() вызывается на GLSurfaceView, когда его (т.е. когда вы вызываете 'setContentView (framelay)' или 'setContentView (R.layout.graphics)' с GLSurfaceView как дочерний элемент frameelay/в файле graphics.xml), а не при вызове 'setRenderer' –

+0

Вы уверены, что вызван конструктор? – Jave

+0

Можете ли вы вызвать 'requestRender()' в GLSurfaceView, чтобы увидеть, рисовать ли вообще? – Jasoneer

ответ

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">