OpenGL ES 苹果编程指南 官方文档翻译01
生活随笔
收集整理的這篇文章主要介紹了
OpenGL ES 苹果编程指南 官方文档翻译01
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
OpenGL ES Programming Guide for iOS
文章源地址(英文):https://developer.apple.com/library/ios/#documentation/3DDrawing/Conceptual/OpenGLES_ProgrammingGuide/Introduction/Introduction.html#//apple_ref/doc/uid/TP40008793關于OpenGL ES
開放圖形庫(OpenGL)用于可視化的2D和3D數據。它是一種多用途的開放式標準圖形庫,支持2D和3D數字內容的創建,機械和建筑設計,虛擬樣機,飛行模擬游戲,視頻游戲,和更多的應用程序。 OpenGL允許應用程序開發人員配置3D圖形管線,并提交給它的數據。頂點被變換和點亮時,組裝成基本圖元,然后光柵化以創建2D圖像。 OpenGL被設計用來轉化函數調用到圖形命令,這寫圖形命令可以被發送到底層的圖形硬件。因為這個底層硬件處理圖形命令,OpenGL繪圖通常是非常快的。對于嵌入式系統的OpenGL(OpenGL ES)是一個簡化版本的OpenGL,消除了冗余的功能,提供一個庫,它是更容易學習,更容易實現在移動圖形硬件。
OpenGL ES 1.x 針對固定管線硬件的,OpenGL ES 2.x 針對可編程管線硬件。OpenGL ES 1.0 是以 OpenGL 1.3 規范為基礎的,OpenGL ES 1.1 是以 OpenGL 1.5 規范為基礎的,它們分別又支持 common 和 common lite 兩種profile。lite profile只支持定點實數,而common profile既支持定點數又支持浮點數。 OpenGL ES 2.0 則是參照 OpenGL 2.0 規范定義的
OpenGL ES 的基本工作流程圖:
概覽蘋果公司提供的OpenGL ES 1.1和OpenGL ES 2.0的實現:
OpenGL ES 1.1實現了一個定義良好的固定功能管線。固定功能流水線實現了傳統的照明和陰影著色模型,該模型允許每個階段的管道被配置以執行特定任務,或當它的函數功能不需要的時候可以禁止。
OpenGL ES 2.0分享了許多常見的OpenGL ES 1.1的功能,但刪除了所有針對固定功能管線頂點和片段管線的階段。相反,它引入了新的功能,提供了一個通用著色器為基礎的管道。著色器允許您編寫自定義頂點和片段的功能,圖形硬件上直接執行。著色器,應用程序可以更精確和更清楚地定制管道和執行每個頂點和片段的計算輸入。
OpenGL ES是基于C語言的,與平臺無關的API
因為OpenGL ES是一個基于C語言的API,它是非常便攜的,并得到廣泛支持。作為一個C API,它可以無縫集成到Objective-C的Cocoa Touch的應用程序。在OpenGL ES規范并沒有定義一個窗口層,相反,主機操作系統必須提供的功能來創建一個OpenGL ES渲染的背景下,接受命令,和一個幀緩沖,任何繪圖命令的結果將被寫入。
相關章節:“在iOS上的OpenGL ES”,“配置的OpenGL ES上下文”
OpenGL ES是集成到核心動畫(Core Animation)
Core Animation是iOS圖形的基礎,它可以將您的應用程序中的OpenGL ES內容顯示到屏幕上。當你開發OpenGL ES應用程序時,你的OpenGL ES內容被渲染到一個特殊的Core Animation層,被稱為作為一個CAEAGLLayer對象。使用OpenGL ES渲染的圖像存儲在CAEAGLLayer。 Core Animation會組合這些圖像和其他層中的內容,并提供最終的圖像在屏幕上。
相關章節:“使用OpenGL ES繪圖”
幀緩沖對象(Framebuffer Objects)總是渲染目標 假設有兩種幀緩存系統提供的幀緩存器和幀緩沖對象的OpenGL ES規范。系統幀緩沖的分配使用由主機操作系統提供的API,并連接到屏幕或窗口環境。幀緩沖對象主要是針對屏幕以外的渲染,并沒有直接連接到屏幕或窗口環境。 IOS只使用幀緩沖對象,而不是創建一個單獨的系統幀緩沖,iOS擴展了OpenGL ES API,允許一個幀緩沖對象被分配,這樣它的內容就可以與核心動畫(Core Animation)。
相關章節:“使用OpenGL ES繪圖”
不同設備上的功能可能會有所不同
iOS設備支持各種具有不同功能的圖形處理器。有些設備只支持OpenGL ES 1.1和OpenGL ES 2.0,舊設備只支持OpenGL ES 1.1。即使是支持同一版本的OpenGL ES的設備可能有不同的能力,根據iOS的版本和底層的圖形硬件。蘋果公司提供了許多的OpenGL ES擴展,為您的應用提供新的性能。
為了讓您的應用程序運行在盡可能多的設備并確保與未來的設備和iOS版本的兼容性,您的應用程序必須始終測試底層的OpenGL ES實現的功能,在運行時,禁用任何功能,不具備必要支持的iOS設備。
相關章節:“配置的OpenGL ES Contexts”,“確定OpenGL ES的功能,”平臺說明“
應用程序需要額外的性能優化
圖形處理器并行設備進行圖形操作方面進行了優化。要獲得很好的性能在您的應用程序里,你必須仔細設計你的應用程序去提供有效的數據和命令到OpenGL ES圖形硬件,這樣圖形硬件就能和您的應用程序并行運行。一個不好的協調會迫使CPU或是GPU去不得不等待對方完成它自己的處理命令。
您應該設計你的應用程序有效合理的使用OpenGL ES API。一旦你已經完成構建您的應用程序,使用工具來微調您的應用程序的性能。如果您的應用程序在OpenGL ES方面遇到性能的瓶頸了,使用本指南中提供的信息來優化您的應用程序的性能。
Xcode的4提供了新的工具來幫助你提高你的OpenGL ES應用程序的性能。
相關章節的“OpenGL ES應用程序設計指南”,“工作和頂點數據的最佳實踐”,“工作與紋理數據”,“最佳實踐著色器的最佳實踐,”調整你的OpenGL ES應用程序“,”平臺說明“
當應用程序進入后臺OpenGL ES 或許不能使用
在后臺運行的應用程序可能無法調用OpenGL ES的功能。如果您的應用程序訪問圖形硬件處理器,程序是在后臺時,它會自動終止被iOS系統。為了避免這種情況,您的應用程序應該清除任何之前要提交給OpenGL ES掛起的命令,在程序進入到后臺之前,并避免調用OpenGL ES,直到程序移回到前臺。
相關章節:“實現多任務感知的OpenGL ES應用”
OpenGL ES在多線程應用程序中額外的限制
設計的應用程序會充分的利用多線程,它可以幫助提高應用程序的性能。如果您的OpenGL ES應用程序也添加并發性,你必須確保應用程序不會從兩個不同的線程同時訪問相同的上下文(context)。
相關章節:“并發和OpenGL ES”
如何使用這個本檔
如果你是新手在OpenGL ES或iOS開發上,那么你要開始通過閱讀iOS上的“OpenGL ES”,它提供的OpenGL ES的體系結構,它是如何集成到iOS的概述。為了閱讀剩余的章節。
有經驗的iOS開發者應該專注于閱讀“使用OpenGL ES繪圖”,以了解如何整合到您的應用程序中的OpenGL ES以及如何正確地貫徹執行渲染循環的新的細節。然后,閱讀“OpenGL ES應用程序設計指南”,更深入地研究如何能夠設計高效的OpenGL ES應用程序。 “平臺”上的硬件和軟件提供給您的應用程序提供更詳細的信息。
先決條件
在試圖創建一個OpenGL ES應用程序之前,你應該已經熟悉意見,意見與核心動畫互動。請參閱編程指南適用于iOS的。
雖然本文檔介紹了重要的OpenGL ES的概念,它不是一個教程或參考的OpenGL ES API。要了解更多有關創建OpenGL ES的應用程序,請參閱下面的參考資料。
參見
OpenGL ES是由Khronos集團定義一個開放的標準。對于OpenGL ES 1.1和2.0的更多信息,請咨詢自己的網頁在http://www.khronos.org/opengles/。
的OpenGL?ES2.0編程指南,由Addison-Wesley出版,提供了一個全面的介紹了OpenGL ES的概念。
的OpenGL?著色語言,第三版,由Addison-Wesley出版,提供了許多明暗處理算法,可用于在你的OpenGL ES應用程序。您可能需要修改一些算法的移動圖形處理器的運行效率。
OpenGL ES API的注冊表是官方庫中的OpenGL ES 1.1和OpenGL ES 2.0規格的OpenGL ES著色語言規范和文檔的OpenGL ES擴展。
OpenGL ES 1.1規范參考頁提供了一個完整的OpenGL ES 1.1規范,按字母順序排列的索引。
OpenGL ES 2.0的參考頁提供了一個完整的OpenGL ES 2.0規范,按字母順序排列的索引。
參考OpenGL ES框架的的蘋果公司提供的集成OpenGL ES融入iOS平臺特定的函數和類。
總結
以上是生活随笔為你收集整理的OpenGL ES 苹果编程指南 官方文档翻译01的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: excel数字不能累加_如何修复不累加的
- 下一篇: cherry-pick的定义和使用方法