簡介OpenGL ES
談到OpenGL ES,首先我們應該先去了解一下Android的基本架構,基本架構下圖:
在這里我們可以找到Libraries里面有我們目前要接觸的庫,即OpenGL ES。
根據上圖可以知道Android 目前是支持使用開放的圖形庫的,特別是通過OpenGL ES API來支持高性能的2D和3D圖形。OpenGL是一個跨平台的圖形API。為3D圖形處理硬件指定了一個標准的軟件接口。OpenGL ES 是適用於嵌入式設備的OpenGL規范。
Android 支持OpenGL ES API版本的詳細狀態是:
- OpenGL ES 1.0 和 1.1 能夠被Android 1.0及以上版本支持
- OpenGL ES 2.0 能夠被Android 2.2及更高版本支持
- OpenGL ES 3.0 能夠被Android 4.3及更高版本支持
- OpenGL ES 3.1 能夠被Android 5.0及以上版本支持
基本介紹
Android 能夠通過framework框架提供的API或者NDK來支持OpenGL。本文重點介紹框架提供的接口來使用OpenGL的方式,有關於NDK方面的信息,可以自行去官方文檔進行了解。
在Android框架里面兩個基本的類允許你使用OpenGL ES API創建和操作圖形: GLSurfaceView 和 GLSurfaceView.Renderer。如果您的目標是在Android程序中使用OpenGL,那么首先需要做的事情就是了解這兩個類。
GLSurfaceView
這是一個視圖類,你可以使用OpenGL API來繪制和操作圖形對象,這一點在功能上很類似於SurfaceView。你可以通過創建一個SurfaceView的實例並添加你的渲染器來使用這個類。但是如果想要捕捉觸摸屏的事件,則應該擴展GLSurfaceView以實現觸摸監聽器。關於實現觸摸監聽器的方式,我們會在后面的文章中進行講解。
GLSurfaceView.Renderer
此接口定義了在GLSurfaceView中繪制圖形所需的方法。您必須將此接口的實現作為單獨的類提供,並使用GLSurfaceView.setRenderer()將其附加到您的GLSurfaceView實例。
GLSurfaceView.Renderer要求實現以下方法:
- onSurfaceCreated():創建GLSurfaceView時,系統調用一次該方法。使用此方法執行只需要執行一次的操作,例如設置OpenGL環境參數或初始化OpenGL圖形對象。
- onDrawFrame():系統在每次重畫GLSurfaceView時調用這個方法。使用此方法作為繪制(和重新繪制)圖形對象的主要執行方法。
- onSurfaceChanged():當GLSurfaceView的發生變化時,系統調用此方法,這些變化包括GLSurfaceView的大小或設備屏幕方向的變化。例如:設備從縱向變為橫向時,系統調用此方法。我們應該使用此方法來響應GLSurfaceView容器的改變。