OpenGL ES (1): OPenGL-ES介紹
阿新 • • 發佈:2018-12-14
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的方法來進行繪製。