1. 程式人生 > >OpenGL ES (1): OPenGL-ES介紹

OpenGL ES (1): OPenGL-ES介紹

1.OPenGL簡述

OPenGL(Open Graphics Library):開放圖形介面,是一套跨程式語言,跨平臺的程式設計介面規範,主要用於三維圖形程式設計(二維也可以)。

但是三維圖形的計算需要處理大量的資料,所以OpenGL不適於應用在小型裝置上如手機。

OpenGL ES(OpenGL for Embedded System)是 OpenGL的一個子集,它是為嵌入式系統如(手機,汽車,家電等)而專門設計的OpenGL的子集。我們接下來要說得就是OpenGL ES。

OpenGl ES剔除了OpenGL中對四邊形和多邊形的支援,只能通過繪製三角形組成3D圖形。

2.準備

先來看adnroid開發中常用的座標系:

但是在這裡我們不需要這個,請先把上面這個座標系暫時忘記

我們需要的座標系是下面這個

每個頂點的位置由(x,y,z)組成。而一個3D圖形需要很多個點。

3.使用

Android為 OPenGL ES支援提供了GLSurfaceView元件用於顯示3D圖形,但其本身不繪製3D圖形,繪製是由GLSurfaceView.Renderer來完成3D圖形繪製。

在Android中使用OpenGL ES步驟如下:

  • 1.建立GLSurfaceView元件,用於顯示繪製的圖形

GLSurfaceView glView = new GLSurfaceView(this);

  • 2.建立GLSurfaceView.Render 內容繪製器,但是需要重寫三個方法。

MyRenderer myRenderer = new MyRenderer();   //MyRenderer繼承Renderer重寫3個方法

  • 3.為GLSurfaceView設定繪製器

glView.setRenderer(myRenderer);

重寫的3個方法如下:

  • onSurfaceCreated(GL10 gl , EGLConfig config):建立GLSurfaceView時,系統呼叫一次該方法。使用此方法執行只需要執行一次的初始化操作。
  • onDrawFrame(GL10 gl):系統在每次重畫GLSurfaceView時呼叫這個方法。使用此方法作為繪製(和重新繪製)圖形物件的主要執行方法。
  • onSurfaceChanged(GL10 gl , int width , int height):當GLSurfaceView發生變化時,系統呼叫此方法,這些變化包括GLSurfaceView的大小或裝置螢幕方向的變化。常用來初始化3D場景。

其中的形參GL10代表了OpenGL ES的繪製畫筆,當用Renderer繪製3D圖形時,其實是呼叫GL10的方法來進行繪製。