1. 程式人生 > >Android OpenGL ES 入門系列(一) --- 了解OpenGL ES的前世今生

Android OpenGL ES 入門系列(一) --- 了解OpenGL ES的前世今生

target 初始化 vertex 單獨 http hang tex 變化 3d圖

轉載請註明出處

本文出自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的前世今生