第一章 OpenGL ES2 基礎概念

Shader

中文翻譯為著色器(or 遮色片), 有Vertex Shader(頂點著色器)及Pixel shader(像素著色器). 這二個都是可編程管線的算法片段

Pipeline

管線, 圖形渲染(Render)時, 就像流水線一樣的順序來處理(一個一個往下處理的意思). 早期的顯示卡管線是固定的, 又稱不可編程. 到了後期, 全都採用了可自訂的可編程管線

Vertex Shader

頂點著色器, 模型是由很多的座標點所構成, 這些座標點就稱為Vertex. 改變了Vertex, 就可以改變模型的外觀. 所以模型的骨架, 都是由Vertex Shader所組成. 通常3D遊戲都由20多萬個頂點所組成. 史瑞克電影更是由500多萬個頂點構成, 要由幾百台電腦才可運算完成.

vertexshader

Pixel Shader

像素著色器, 每個像素都有不同的顏色, 所以為每個像素填入顏色, 即可形成我們所看到的影像. 所以Pixel Shader又可稱為模型的材質(texture)

pixelshader

Geometry Shader

是後來追加的幾何著色器, 不過在ES應該是不支援, 只是看了下圖後, 就知道為什麼會想說明一下了

geometryshader

以上圖片, 引用 逍遙文工作室

查看版本

OpenGL ES, ES代表著Embedded System的意思, 目前的裝置都是2.0版以上了. 為了查看裝置上的版本號碼, 可使用如下程式碼進行檢查. Log若為20000即為2.0的版本. 30000即為3.0

ActivityManager am = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
ConfigurationInfo info = am.getDeviceConfigurationInfo();
String currentVersion = Integer.toHexString(info.reqGlEsVersion);
Log.d("Thomas", currentVersion);

若要讓沒有支援2.0的裝置無法安裝, 可於AndroidManifest.xml加入如下的設定

<uses-feature android:glEsVersion="0x00020000" android:required="true" />

紋理 Texture

紋理, 是一個很迷惑的名詞. 紋理指的是一個區塊裏的圖像, 然後可以用這個圖像重複的貼圖.

紋理可以是一個小圖, 然後構成一個大圖.

而一個大圖, 也可以是一個紋理

待續

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *