天天看點

Android OpenGL ES 2.0(一)------運作環境配置

1.在使用OpenGL ES前,需要在AndroidManifest.xml中設定OpenGL ES的版本,這裡我們使用的是OpenGL ES2.0,是以可進行如下聲明。

<uses-feature android:glEsVersion="0x00020000" android:required="true" /> 
           

2.在Activity的onCreate方法中對GLSurfaceView進行初始化,設定相關配置資訊

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_first);

    glSurfaceView = findViewById(R.id.glSurfaceView);
    //GLContext設定OpenGLES2.0
    glSurfaceView.setEGLContextClientVersion(2);
    //設定渲染器
    glSurfaceView.setRenderer(new FirstRenderer());

    //設定渲染方式,RENDERMODE_WHEN_DIRTY表示被動渲染,
    //隻有在調用requestRender或者onResume等方法時才會進行渲染。
    // RENDERMODE_CONTINUOUSLY表示持續渲染
    glSurfaceView.setRenderMode(GLSurfaceView.RENDERMODE_CONTINUOUSLY);

}

@Override
protected void onResume() {
    super.onResume();
    glSurfaceView.onResume();
}
@Override
protected void onPause() {
    super.onPause();
    glSurfaceView.onPause();
}
           

3.編寫渲染器,實作GLSurfaceView.Renderer接口,GLSurfaceView的渲染工作主要由GLSurfaceView.Renderer負責渲染。

public class FirstRenderer implements GLSurfaceView.Renderer {

@Override
public void onSurfaceCreated(GL10 gl10, EGLConfig eglConfig) {
    //surface被建立後需要做的處理
    //設定背景顔色
    GLES20.glClearColor(0.0f, 0.0f, 1.0f, 1.0f);
}

@Override
public void onSurfaceChanged(GL10 gl10, int width, int height) {
    // 渲染視窗大小發生改變或者螢幕方法發生變化時候回調
    GLES20.glViewport(0, 0, width, height);
}

@Override
public void onDrawFrame(GL10 gl10) {
    //執行渲染工作
    //重新繪制背景顔色
    GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT);
}
}
           

效果圖如下:

Android OpenGL ES 2.0(一)------運作環境配置

完整Demo位址:GitHub位址 喜歡給個Star 謝謝