android OpenGL簡介(一)

openGL是Open Graphics Library的縮寫,指開源圖形庫。wikipedia 對其定義如下,它是一個跨語言,跨平臺的應用程序接口,提供2D,3D圖形渲染接口,操作在GPU之上,實現硬件加速渲染。
Open Graphics Library (OpenGL) is a cross-language, cross-platform application programming interface (API) for rendering 2D and 3D vector graphics. The API is typically used to interact with a graphics processing unit (GPU), to achieve hardware-accelerated rendering.OpenGL用於桌面系統,在移動平臺上的是其嵌入式的版本,叫做OpenGL ES(OpenGL Embedded Systems)。OpenGL ES 1.0把三維帶進了移動平臺,2.0取代了大多數舊的API,替換爲新的可編程API;2012年8月,Khronos組織確定了3.0的規範,並向後兼容了OpenGL ES 2.0。

OpenGL ES 1.0 是以 OpenGL 1.3 規範爲基礎的,OpenGL ES 1.1 是以 OpenGL 1.5 規範爲基礎的,1.1完全兼容1.0。OpenGL ES 2.0 則是參照 OpenGL 2.0 規範定義的。簡單的來說,OpenGL ES是OpenGL針對嵌入式應用的簡化版,也就是android使用的標準。OpenGL ES 1.1強調api的硬件加速,OpenGL ES 2.0更強調3D能力。

OpenGL ES 1.1和OpenGL ES 2.0之間的關係並不是舊版本和新版本之間的差別,而是一個針對相對低端的應用,一個針對高級應用,OpenGL官方的roadmap也是將這兩個版本並行發展的。2.X並不能百分百兼容1.X。Android現在支持1.X和2.X。android上opengs開發有兩種方式,1. 通過android framework 提供的接口開發2. 通過android ndk 開發首先看通過framework提供的java接口開發方式:android framework層通過兩個類提供opengs es開發基礎, 類GLSurfaceView和GLSurfaceView.Renderer接口,GLSurfaceView 是一個view,繼承了surfaceview,surfaceview的一個重要用法是你可以單獨開啓線程在屏幕上渲染圖像,而不像其他基於view的控件都屬於ui線程。

GLSurfaceView 給opengls es 繪製線程提供surface,當創建一個glsurfaceview並綁定到到activity時需要註冊在此surfaceview上渲染的Renderer對象, 通過調用setRenderer(Renderer) 完成註冊,setRenderer調用時會創建繪製線程,此線程會根據ui事件及surface窗口的改變回調GLSurfaceView.Renderer 接口的回調方法,真正的繪製動作都在此接口的回調方法裏實現,接口方法包括:
//繪製幀數據abstract void onDrawFrame(GL10 gl)
//當surface大小改變時被調用abstract void onSurfaceChanged(GL10 gl, int width, int height)
//當surface被創建時 調用,這裏可以作初始化動作。abstract void onSurfaceCreated(GL10 gl, EGLConfig config)所以openggl es開發通常是實現這幾個接口,然後 調用setRenderer(Renderer)把 此接口註冊給GLSurfaceView。

調用setRenderer(Renderer)會把Renderer對象傳給繪製線程,繪製線程操作此對象,當ui線程想和繪製線程通信時可以採用java提供的線程間通信方法,也可以用GLSurfaceView 提供的queueEvent(Runnable),因爲輸入事件都屬於ui線程,所以如果想通過輸入事件控制繪製線程queueEvent是個不錯的選擇。
Class Overviewjava.lang.Object ↳ android.view.View
↳ android.view.SurfaceView ↳android.opengl.GLSurfaceView

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章