1. 程式人生 > >Android平臺OpenGL ES影象處理(improving)

Android平臺OpenGL ES影象處理(improving)

在Android平臺一般使用OpenGL ES進行影象處理。在OpenGL ES中編寫演算法,實現效果,最後將處理的結果傳輸給 CPU,然後生成最終的照片。

直播中的美顏,對效能有很高的要求,無法使用特別複雜的演算法。我們只能在演算法和美顏效果之間找個平衡點。

OpenGL® ES是一個用於嵌入式系統全功能2D和3D影象的免版稅、跨平臺API—包括控制檯、電話、家用電器和車輛。由桌面OpenGL定義明確的子合集組成,其創造了一個軟體和影象加速之間靈活而有力的低水平介面。OpenGL ES包括浮點和定點系統配置檔案以及本地視窗系統的行動式繫結EGL™規範。OpenGL ES 1.X用於固定功能硬體並提供加速、影象質量和效能。OpenGL ES 2.X實現3D影象的完全可程式設計。OpenGL SC是用於安全高要求市場。
概覽OpenGL ES API配置檔案和版本
OpenGL ES 1.X

固定功能硬體: OpenGL ES 1.1是相對於 OpenGL 1.5 定義 的規範,著重強調API的硬體加速,但是對1.0完全實現向後相容。其加強了功能性、改善影象質量並優化至更高的效能,同時降低記憶體頻寬以節約能源。OpenGL ES 1.1擴充套件包是新增至OpenGL ES 1.1的一系列可選擴充套件項,降低可變性並帶來影象質量和效能的巨大改進。 瞭解更多…
OpenGL ES 2.X – 用於可程式設計硬體

可程式設計硬體: OpenGL ES 2.0是相對於 OpenGL 2.0定義 的規範,著重強調可以建立著色程式和程式物件能力、用OpenGL ES著色語言編寫著色程式頂點和碎片能力的可程式設計3D影象管線。OpenGL ES 2.0不支援OpenGL ES 1.x的固定功能轉換和碎片管線。瞭解更多…

OpenGL ES 2.0 規範、標頭檔案和可選擴充套件規範
OpenGL ES 2.0 線上手冊頁面
OpenGL ES 2.0 快速參考卡

更多OpenGL ES細節:
免版稅 2D/3D API,包括桌面OpenGL定義明確的子合集。

OpenGL® ES是一個低水平、輕量級的API,用於使用OpenGL定義明確的子合集的高階嵌入式影象。其在軟體應用程式和硬體或者軟體影象引擎間提供了一個低水平應用程式介面(API)。

此標準3D影象API用於嵌入式系統,使之更加簡便和價格合理地提供各種高階3D影象和遊戲,橫跨所有主要的移動和嵌入式平臺。因為OpenGL ES(OpenGL用於嵌入式系統)是基於OpenGL的,所以不需要新的技術。這確保了與到達和來自OpenGL桌面遷移路徑的協同作用—最被廣泛採用的跨平臺影象API。

開發者優勢

行業標準和免版稅
任何人都可以下載OpenGL ES規範並在OpenGL ES基礎上執行並執行產品。憑藉巨大的行業支援,OpenGL ES是唯一真正開放、廠商中立、多平臺的嵌入式影象標準。其標準化更高水平的抽象意味著開發人員可以把更多的精力放在內容方面,而不是少數程式碼和平臺的細節問題。
佔用空間小 & 低耗能
嵌入式空間涵蓋範圍非常廣,從配有64兆記憶體的400 Mhz的掌上電腦到配有1兆記憶體的50Mhz行動電話。OpenGL ES是為適應這些區別而設計的,通過最小化資料儲存要求、最小化指令/資料通訊、適應整體和浮點,以實現最低空間佔用。對於使用者而言,這意味著更小的二進位制下載,可以減少在裝置上的儲存空間佔用。
從軟體到硬體渲染的無縫連線
儘管OpenGL ES規範定義的是一個特殊影象處理管線,個別的要求可以在專用硬體上履行,在系統CPU上作為一個軟體程式執行,或者作為專用硬體和軟體程式的聯合體執行。這意味著如今的軟體開發者可以使用符合標準的軟體3D引擎,實現應用程式和工具的無縫連線,將OpenGL ES用於更高耗能裝置的硬體加速。
可擴充套件 & 演變
新的硬體創新可以通過OpenGL擴充套件機制的API進入OpenGL ES,同時API的更新十分簡便。因為擴充套件性逐漸被廣泛接受,也正在考慮被融入到核心OpenGL ES標準中。此處理使OpenGL ES可以演變為一種可控同時創新的方式。
使用簡單
基於OpenGL,OpenGL ES擁有直觀設計與邏輯指令的良好結構。
檔案管理有序
因為OpenGL ES是以OpenGL為基礎的,大量的相關示範程式碼使關於OpenGL ES的相關資訊價格低廉同時方便查詢。通過OpenGL ES的介紹,開發人員現在為從手機到超級計算機可以編寫基本一樣的程式碼。

符合性測試

規範每年要經過檢查和修改。要被標註為OpenGL ES合格實施,其必須通過一套的符合性測試。該符合性測試的定義將作為OpenGL ES檔案編制的一個獨立部分進行維護。
OpenGL ES 的2個軌跡路線圖

OpenGL ES路線圖是專門為嵌入式行業的各種需求設計的,包括”1.X”和”2.X”規範路線的兩個軌跡,並將同時開發。1.X路線圖將繼續為新一代固定功能3D加速器進行開發,同時2.X路線圖將實現新興可程式設計3D管線。該雙軌跡路線圖使OpenGL ES可以滿足大量3D的影象要求,用於嵌入式市場的各種裝置和平臺,從低端的手機到高階的遊戲控制器。Khronos致力於提供每個1.X 和2.X軌跡的各個API版本間的向後相容性,以確保應用程式可以在各個版本間順利地傳輸。
Two Tracks for OpenGL ES
OpenGL ES框架
OpenGL ES Momentum

這裡寫圖片描述

這裡寫圖片描述

配置檔案:
OpenGL ES規範包括許多配置檔案的定義。每個配置檔案是一個版本桌面OpenGL規範的子集以及一些其他的OpenGL ES特有擴充套件。OpenGL ES配置檔案是整個OpenGL衍生應用程式介面龐大家族的一部分。同樣地,這些配置檔案分享了一個相似的處理管線、指令結構還有一樣的OpenGL名字空間。必要的是,擴充套件性是為了擴大已有的桌面OpenGL功能。OpenGL ES專有的擴充套件性在OpenGL ES配置檔案中扮演的角色就像是相對於OpenGL規範的OpenGL ARB擴充套件性作用。OpenGL ES專有擴充套件性既是計劃未來融入核心配置檔案修訂版的功能的前驅,也是重要但非主流的功能的形式化。每個配置檔案定義都意味著一個獨特的標頭檔案和連結/執行時間庫,定義配置檔案中的指令和符號。為簡化維護一個單獨的超集,可以用相應的假定預處理指令定義資料頭,來控制符號和指令原型的可見性。在執行時間,一個應用程式可以決定哪個配置檔案在用OpenGL版本字串執行。

公用配置檔案是用於消費者娛樂和相關的裝置,例如手機、掌上電腦、機頂盒、遊戲控制器等等。其用於最廣泛的市場範圍,包括支援帶有各種效能的平臺。
    空間佔用最小化,紋理繪圖的全功能3D
    良好的遊戲平臺
    可用於手機裝置
安全高要求配置檔案是用於將可靠性和可認證性作為主要約束條件的消費者和行業的應用程式。
    絕對最小化3D以確保安全認證
    用於航空電子裝置和車載顯示器
擴充套件性:
OpenGL ES執行可能包括新增新的特點到執行中的擴充套件性。一個OpenGL ES配置檔案由兩部分組成:一個全部OpenGL管線的子集和一些從一套OpenGL ES專業擴充套件性中提取至完整OpenGL規範的擴充套件功能。每個擴充套件性都會經過修剪,與指令子集匹配並新增到配置檔案作為核心增加項或者配置檔案擴充套件檔案。核心增加項與配置檔案擴充套件檔案的區別在於指令和符號不包括在其名稱到擴充套件字尾中。配置檔案都擴充套件性被進一步分為要求(強制性的)和可選擴充套件性。要求擴充套件性必須作為符合執行的一部分進行,而可選擴充套件性的執行則取決於執行者的判斷。
本地平臺影象介面層- EGL:
OpenGL ES還包括一個普通平臺介面層的規範,叫做EGL。這層是平臺獨立的,而且可以有選擇性地被包括到廠商的OpenGL ES分佈中。平臺繫結也有一個關聯符合性測試。或者,廠商可以選擇定期他們自己的平臺專有嵌入層。