Android圖形—OpenGL(一)

來源:互聯網
上載者:User

本文譯自: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容器中的改變。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.