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