本文譯自:http://developer.android.com/guide/topics/graphics/opengl.html
Android系統包含了OpenGL(Open Graphics Library),從而給2D和3D圖形提供了高效能的支援,尤其是OpenGL ES API。OpenGL是一個跨平台圖形API,它給3D圖形處理指定了一個標準的軟體介面。OpenGL ES是一種用於嵌入式裝置的OpenGL規範。從Android1.0開始,就提供了對OpenGL ES1.0和1.1API規範的支援。從Android2.2(API
Level 8)開始,架構開始支援OpenGL ES2.0 API規範。
注意:由Android架構所指定的API有點類似J2ME的JSR239 OpenGL ES API,但是它們還是有區別的,如果你熟悉J2ME的JSR239規範,就要小心其中的變化。
基礎
Android通過它架構API和NDK(Native Development Kit)來支援OpenGL。本文主要關注Android架構介面,關於NDK的更多資訊,請看Android NDK(http://developer.android.com/sdk/ndk/index.html)
在Android架構中有兩個OpenGL ES API類庫用來建立和維護圖形:GLsurfaceView和GLSurfaceView.Renderer。如果是要在應用程式中使用OpenGL,那麼瞭解在一個Activity如何?這些類應該是第一目標。
GLSurfaceView
這個類是一個View,在這個類中能夠繪製和維護使用OpenGL API調用的對象,並且它跟SurfaceView類的功能類似。通過建立GLSurfaceView類的一個執行個體,並給它添加一個Renderer對象來使用這個類。但是,如果想要捕獲觸屏事件,那麼就應該繼承GLSurfaceView類並實現它的觸屏監聽器。樣本程式TouchRotateActivity(http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/TouchRotateActivity.html)。
GLSurfaceView.Renderer
這個介面定義了在一個OpenGL的GLSurfaceView類中繪製圖形所必須的方法。必須提供一個單獨的類來實現這個介面,並且使用GLSurfaceView.setRenderer()方法把它綁定到GLSurefaceView類的執行個體上。
以下是必須實現的GLSurfaceView.Renderer介面方法:
1. onSurfaceCreated()
在建立GLSurfaceView對象時,系統會調用一次這個方法。使用這個方法來執行那些只需要發生一次的動作,如設定OpenGL環境參數或初始化OpenGL繪圖物件。
2. onDrawFrame()
每次重繪GLSurefaceView對象時,系統都會調用該方法。使用這個方法作為繪製圖形(包括圖形重繪)對象的初始執行點。
3. onSurefaceChanged()
當GLSurfaceView對象的幾何圖形發生改變時(包括尺寸或裝置螢幕方向的改變等),系統會調用這個方法。例如,當裝置從縱向改到橫向時,系統就會調用這個方法。使用這個方法來響應GLSurfaceView容器中的改變。