Android OpenGL ES 入門系列(一) --- 了解OpenGL ES的前世今生
轉載請註明出處
本文出自Hansion的博客
OpenGL ES (OpenGL for Embedded Systems)
是 OpenGL 三維圖形 API 的子集,針對手機、PDA和遊戲主機等嵌入式設備而設計,主要用來開發3D圖形應用
Android支持以下幾個版本的OpenGL ES API:
OpenGL ES 1.0和1.1 支持Android 1.0及更高版本
OpenGL ES 2.0 支持Android 2.2(API級別8)及更高版本
OpenGL ES 3.0 支持Android 4.3(API級別18)及更高版本
OpenGL ES 3.1 支持Android 5.1(API級別21)及更高版本
註意不要將OpenGL ES 1.x API調用與OpenGL ES 2.0方法混合使用,因為其API不可互換。
在Android框架中有兩個基礎類:GLSurfaceView和GLSurfaceView.Renderer,它們允許您使用OpenGL ES API創建和操作圖形。
GLSurfaceView:
是一個可以使用OpenGL API調用來繪制和操作對象的View,功能上類似於SurfaceView。
可以通過創建一個GLSurfaceView的實例並添加渲染器來使用它。
GLSurfaceView.Renderer:
該接口定義了在GLSurfaceView中繪制圖形所需的方法。
必須提供單獨的類實現此接口,並使用GLSurfaceView.setRenderer()將其附加到GLSurfaceView實例。
它必須實現以下幾個方法:
onSurfaceCreated(): 系統會在創建GLSurfaceView時調用一次該方法。我們在此方法中做一些只需執行一次的操作,如設置OpenGL環境參數或初始化OpenGL圖形對象。
onDrawFrame(): 系統在每次重繪GLSurfaceView時調用此方法。此方法用於繪制(和重新繪制)圖形對象。
onSurfaceChanged(): 當GLSurfaceView的大小或設備屏幕方向發生變化時,系統調用此方法。例如,當設備從縱向變為橫向時,系統調用此方法。
在Android上Opengl是通過Vertex Shader (定點著色器)和 Fragment Shader (片段著色器)這兩種定點著色器程序來實現圖片的加載和渲染的
頂點著色器的作用是為每一個頂點生成坐標,因此每個頂點都要運行一遍頂點著色器程序,一旦頂點坐標計算出來之後,OpenGL就能夠使用這些頂點來組成點,線,和三角形。所有任意的圖形都是由這三種基本元素來描述的。
片段著色器的作用是為點,線或者三角形的每一個頂點的片段(Fragment)生成渲染後的最終顏色。片段就是一個小的單色矩形區域,可以簡單的認為是屏幕上的一個像素點。
OpenGL坐標原點在屏幕中央,左右坐標範圍為[-1,1]
參考:
OpenGL ES官方資料
Android OpenGL ES 入門系列(一) --- 了解OpenGL ES的前世今生