Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android OpenGL ES: 第一個程序

Android OpenGL ES: 第一個程序

編輯:關於Android編程

1. 概要

OpenGL是桌面環境下的繪制,渲染三維圖形的API。

OpenGL ES是在Android環境下的OpenGL。

在Android中OpenGL需要在GLSurfaceView中渲染,渲染控制函數在GLSurfaceView.Renderer中。接下來會介紹如何創建第一個OpenGL程序

 

2. 配置AndroidManifest

(1)聲明OpenGL ES API

(2)如果在APP中用到紋理,需要聲明采用紋理的格式

 

 

3. 創建一個OpenGL Project

3.1 創建Activity

只需要在Activity中設置一個GLSurfaceView即可。

FirstGLSurfaceView繼承於GLSurfaceView。

 

public class FirstGLActivity extends Activity {

    private FirstGLSurfaceView mGLView;

    @Override
    protected void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        mGLView = new FirstGLSurfaceView(getApplication());
        setContentView(mGLView);
    }

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

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

 

3.2 創建GLSurfaceView

此部分需要聲明OpenGL版本,設置Renderer

 

class FirstGLSurfaceView extends GLSurfaceView {

    private final FirstGLRenderer mRenderer;

    public MyGLSurfaceView(Context context){
        super(context);

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

        mRenderer = new MyGLRenderer();

        // Set the Renderer for drawing on the GLSurfaceView
        setRenderer(mRenderer);
    }
}

 

3.3 創建Render

GLSurfaceView.Renderer是OpenGL ES最重要的一部分,設置OpenGL環境,繪制OpenGL都是在Renderer中完成。

Render實現了GLSurfaceView.Renderer接口,需要實現3個函數:
onSurfaceCreated() - Surface創建時會觸發此事件,在此事件中需要完成OpenGL的初始化工作。
onDrawFrame() - 更新OpenGL繪制的內容
onSurfaceChanged() - 當Surface大小改變時觸發此事件,比如方向改變等。

如果您了解桌面環境下OpenGL編程,那麼我們可以將其與GLUT創建的OpenGL程序對應起來(參見第一個OpenGL程序)。

onSurfaceCreated --- init

onDrawFrame --- display

 

?

public class FirstGLRenderer implements GLSurfaceView.Renderer {

    public void onSurfaceCreated(GL10 unused, EGLConfig config) {
        // Set the background frame color
        GLES20.glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
    }

    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);
    }
}


 

 

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved