2013-12-16 134 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 

「利用GPU主機」 中是AVD snabled。

回答

0

添加GPU仿真硬件屬性並在仿真中將其值設置爲yes。添加它們並嘗試它。

當您創建一個新的虛擬設備時有一個硬件部分。添加新的。有一個GPU模擬選項添加此。

+1

老兄,先生或女士,你可以引導新手穿過篝火。我擁有計算機科學學位,我仍然是個白癡。 – johnsonwi

+0

仍然不起作用,在AVD中選中「使用gpu主機」。 – johnsonwi

+0

不存在術語「GPU模擬」..添加了 –

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()需要被註釋掉。那麼它不會在加載時崩潰。