天天看點

OpenGLES(一)——介紹一、OpenGL介紹二、OpenGLES介紹三、OpenGLES的渲染管線OpenGLES的一些基本概念

一、OpenGL介紹

    OpenGL(全寫Open Graphics Library)是指定義了一個跨程式設計語言、跨平台的程式設計接口規格的專業的圖形程式接口。它用于三維圖像(二維的亦可),是一個功能強大,調用友善的底層圖形庫。

    OpenGL在不同的平台上有不同的實作,但是它定義好了專業的程式接口,不同的平台都是遵照該接口來進行實作的,思想完全相同,方法名也是一緻的,是以使用時也基本一緻,隻需要根據不同的語言環境稍有不同而已。OpenGL這套3D圖形API從1992年釋出的1.0版本到目前最新2014年釋出的4.5版本,在衆多平台上多有着廣泛的使用。

二、OpenGLES介紹

1.簡介

    OpenGL ES (OpenGL for Embedded Systems) 是 OpenGL 三維圖形 API 的子集,針對手機、PDA和遊戲主機等嵌入式裝置而設計。

    OpenGL ES相對于OpenGL來說,減少了許多不是必須的方法和資料類型,去掉了不必須的功能,對代價大的功能做了限制,比OpenGL更為輕量。在OpenGL ES的世界裡,沒有四邊形、多邊形,無論多複雜的圖形都是由點、線和三角形組成的,也去除了glBegin/glEnd等方法。

2.OpenGLES應用場景

    OpenGL ES是手機、PDA和遊戲主機等嵌入式裝置三維(二維也包括)圖形處理的API,當然是用來在嵌入式裝置上的圖形處理了,OpenGL ES 強大的渲染能力使其成為我們在嵌入式裝置上進行圖形處理的優良選擇。

  • 我們經常使用的場景有
    • 圖檔處理。比如圖檔色調轉換、美顔等。
    • 攝像頭預覽效果處理。比如美顔相機、惡搞相機等。
    • 視訊處理。攝像頭預覽效果處理可以,這個自然也不在話下了。
    • 3D遊戲。比如神廟逃亡、都市賽車等。

3.OpenGLES版本

目前主流的手機都已經支援OpenGLES3.0版本及以上。
           
OpenGL ES 3.2 - 額外的 OpenGL 功能
  • 該系列的最新版本 OpenGL ES 3.2 添加了基于 OpenGL ES 3.1 的Android 擴充包的附加功能,這使得移動 API 的功能明顯更接近其桌面對應物 - OpenGL。
OpenGL ES 3.1 - 将計算引入移動圖形
  • 盡管 OpenGL ES 3.1 隻是 API 的次要修訂版中的一個凸起,但它是 API 的一個巨大裡程碑,因為它增加了在 API 中進行通用計算的能力,進而将計算引入了移動圖形。
OpenGL ES 3.0 - 增強的圖形
  • OpenGL ES 3.0 是 OpenGL ES 的另一個進化步驟,特别是包括多個渲染目标、額外的紋理功能、統一緩沖區、執行個體化和變換回報。
OpenGL ES 2.0 - 可程式設計着色
  • OpenGL ES 2.0 是第一個在當時最新一代圖形硬體中公開可程式設計着色器的便攜式移動圖形 API。它在今天仍然是一個流行的 API,仍然是最廣泛使用的 3D 圖形 API,并且仍然是針對市場上最廣泛裝置的可靠選擇。
OpenGL ES 1.X - 固定功能圖形
  • OpenGL ES 1.0 和 1.1 是第一個可移植的移動圖形 API,相對于 OpenGL 1.5 規範定義,提供固定功能圖形加速

三、OpenGLES的渲染管線

1.什麼是渲染管線

    渲染管線又稱渲染流水線,它是圖形圖像從資料一步一步形成最終輸出的畫面所要經曆的各種操作過程。資料經過一個操作後,被處理成下一個步驟需要的資料,最終一步一步整合成拼湊最終畫面的元素。

  • 抽象來說,以下兩個大步驟是必要:
    • 頂點渲染:用于渲染出形狀
    • 像素渲染:在形狀中填充色彩

是以你可以簡單地認為,渲染管線就是:

OpenGLES(一)——介紹一、OpenGL介紹二、OpenGLES介紹三、OpenGLES的渲染管線OpenGLES的一些基本概念

2.固定管線

固定渲染管線的OpenGLES不需要也不允許你自己去定義頂點渲染和像素渲染的具體邏輯,它内部已經固化了一套完整的渲染流程,隻需要開發者在CPU代碼端輸入渲染所需要的參數并指定特定的開關,就能完成不同的渲染。

OpenGLES 1.x版本就是固定渲染管線的版本。現有的OpenGLES 1.x版本有:

OpenGLES 1.0

OpenGLES 1.1

3.可程式設計渲染管線

可程式設計渲染管線的OpenGLES版本必須由開發者自行實作渲染流程,否則無法繪制出最終的畫面。開發者可以根據自己的具體需要來編寫頂點渲染和像素渲染中的具體邏輯,可最大程度的簡化渲染管線的邏輯以提高渲染效率,也可自己實作特定的算法和邏輯來渲染出固定管線無法渲染的效果。具有很高的可定制性,但同時也對開發者提出了更高的要求。

OpenGLES 2.0及其以上的版本則為可程式設計渲染管線的版本。目前具體的OpenGLES版本有:

OpenGLES 2.0

OpenGLES 3.0

OpenGLES 3.1

固定管線與可程式設計管線:

OpenGLES(一)——介紹一、OpenGL介紹二、OpenGLES介紹三、OpenGLES的渲染管線OpenGLES的一些基本概念

OpenGLES的一些基本概念

繼續閱讀