什麽是 OpenGL ES
OpenGL ES 是一種為嵌入式系統和行動裝置設計的3D圖形API (應用程式編程介面)。它是標準 OpenGL 3D 圖形庫的一個子集,專門為資源受限的環境(如手機、平板電腦、遊戲機和其他人員攜行式裝置)進行了最佳化。
由於其在行動裝置上的廣泛適用性,OpenGL ES是學習移動3D圖形編程的重要工具之一。
隨著技術的發展,新的圖形 API(如 Vulkan 和 Metal )也開始在行動平台上獲得關註,但 OpenGL ES 仍然是一個重要的基準和學習起點。
為什麽學習 OpenGL ES
音視訊開發,渲染引擎,遊戲開發,VR(XR),影像視訊特效,這些方向的崗位都要求掌握 OpenGL 開發。
OpenGL 崗位需求
OpenGL ES 3.X 有什麽新特性?
紋理
2D 紋理陣列和 3D 紋理,保存一組 2D 紋理的紋理目標。
sRGB 紋理,通常用於儲存和顯示經過 sRGB gamma 校正的影像,以獲得更準確和更自然的顏色顯示效果。
浮點紋理,常用於 。
著色器
二進制程式檔 。
統一變量塊 。
布局限定符 layout(location = 0)。頂點著色器輸入可以用布局限定符聲明,以顯式繫結著色器原始碼中的位置,而不需要呼叫 API 。
幾何形狀
變換反饋(Transform Feedback) 。
。OpenGL ES 3.0 引入了 glDrawArraysInstanced 和 glDrawElementsInstanced 函式,它們允許開發者在不同的位置上繪制多個具有相同網格的物體,每個物體可以有不同的變換、紋理和其他內容。這種技術可以顯著提高渲染大量相似物體(如粒子系統、草葉、樹木等)的效率。
緩沖區物件
UBO(Uniform Buffer Objects)。
VAO 頂點陣列物件。
同步物件。
。使應用程式能夠執行對像素操作和紋理傳輸操作的異步數據傳輸。
主要用於幀緩沖區之間的像素拷貝,效能高且使用方便,可以指定緩沖區任意矩形區域的像素拷貝。
幀緩沖區
允許應用程式同時渲染到多個顏色緩沖區。
。減少鋸齒和邊緣的顫動,從而改善影像的平滑度和品質。
。glInvalidateFramebuffer 介面是 OpenGL ES 3.0 引入的,提供了一個通知驅動程式不再需要幀緩沖區內容的機制(最佳化功耗和效能)。
OpenGL ES 3.x 著色器語言規範變化
OpenGL ES 2.0 著色器指令碼
OpenGLES 3.x 著色器指令碼
其中,#version 300 es 為 OpenGL ES 3.0 版本聲明,3.0 中使用 in 和 out 關鍵字取代 attribute 和 varying ,layout 關鍵字直接為指令碼中的內容指定位置,為內容賦值變成了:
而原來 2.0 的賦值方式為:
-- END --
進技術交流群, 掃碼添加我的微信:Byte-Flow
獲取相關資料和源碼
學習音視訊、OpenGL ES、Vulkan 、Metal、影像濾鏡、視訊特效及相關渲染技術的付費社群,面試指導,1v1 簡歷服務,職業規劃。
我的付費社群
推薦: