2013-12-16 4 views
0

Следуя краткому руководству http://developer.android.com/training/graphics/opengl/environment.html#glsurfaceview. Мой пример не работает в эмуляторе. Я хочу иметь базовый пример opengl, работающий в эмуляторе, но он по-прежнему остается проблемой, и даже инструкции разработчиков не работают.Android OpenGL hello world

У меня есть три класса:

package com.test.flushrummy; 

import android.opengl.GLSurfaceView; 
import android.os.Bundle; 
import android.app.Activity; 

public class MainActivity extends Activity { 

    private GLSurfaceView m_GlView; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     m_GlView = new MyGLSurfaceView(this); 
     setContentView(m_GlView); 
    } 

} 

package com.test.flushrummy; 

import javax.microedition.khronos.opengles.GL10; 
import android.opengl.GLES20; 
import android.opengl.GLSurfaceView.Renderer; 

public class MyGLRenderer implements Renderer { 

    public void onDrawFrame(GL10 unused) { 
     // Redraw background color 
     GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT); 
    } 

    public void onSurfaceChanged(GL10 unused, int width, int height) { 
     GLES20.glViewport(0, 0, width, height); 
    } 

    @Override 
    public void onSurfaceCreated(GL10 gl, 
      javax.microedition.khronos.egl.EGLConfig config) { 
     // TODO Auto-generated method stub 
     GLES20.glClearColor(0.0f, 0.0f, 0.0f, 1.0f); 
    } 

} 

package com.test.flushrummy; 

import android.content.Context; 
import android.opengl.GLSurfaceView; 

class MyGLSurfaceView extends GLSurfaceView { 

    public MyGLSurfaceView(Context context) { 
     super(context); 
     setRenderer(new MyGLRenderer()); 

     // Create an OpenGL ES 2.0 context 
     setEGLContextClientVersion(2); 

     // Render the view only when there is a change in the drawing data 
     setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY); 
    } 

} 

есть в моей декларации.

<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="19" /> 

project.properties:

target=android-19 

"Использование графического процессора хоста" является snabled в АДВ.

ответ

0

добавить свойство аппаратного обеспечения эмуляции графического процессора и установить его значение yes в эмуляции. Добавьте их и попробуйте.

При создании нового виртуального устройства есть раздел оборудования. добавьте к нему новое. добавьте этот вариант эмуляции GPU.

+1

чувак, сэр или мадам, вы можете вести новичка через костер. У меня степень компьютерной науки, и я все еще идиот. – johnsonwi

+0

все еще не работает, отметьте «использовать gpu host» в AVD. – johnsonwi

+0

нет нет термина «эмуляция графического процессора» ..add, что –

0
setEGLContextClientVersion(2); 
setRenderer (new MyGLRenderer()); 
setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY); 

Похоже, что порядок вызовов методов важен.

0

У меня была такая же проблема, и это то, что было неправильным, так что может быть ваша проблема тоже:

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    //COMMENT OUT THIS COMMAND 
    //setContentView(R.layout.activity_main); 

    /*if (savedInstanceState == null) { 
     getFragmentManager().beginTransaction() 
       .add(R.id.container, new PlaceholderFragment()) 
       .commit(); 
    } 
    */ 
    //Setup surface view in this activity 
    mView = new GLSurfaceView(this); 
    mView.setEGLContextClientVersion(2); 

    mView.setRenderer(new GraphicRenderer()); 
    mView.setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY); 
    setContentView(mView); 

} 

Шаблон кода setContentView() должен быть закомментированы. то он не будет терпеть крах при загрузке.

Смежные вопросы