資料介紹
OpenGL是一種接口,在我們的應(yīng)用程序中可以用它來訪問或者控制它所運(yùn)行的設(shè)備的圖形子系統(tǒng)。它所運(yùn)行的設(shè)備可以從一個(gè)高端圖形工作站到商用臺(tái)式機(jī)、視頻游戲主機(jī)甚至是一臺(tái)智能手機(jī)。將這些設(shè)備的接口標(biāo)準(zhǔn)化到一個(gè)子系統(tǒng)可以增強(qiáng)移植性并且可以讓軟件開發(fā)者集中精力創(chuàng)作高品質(zhì)的產(chǎn)品、制作更有有趣的內(nèi)容以及關(guān)心他們的應(yīng)用的整體效能,而不是陷于他們想要應(yīng)用運(yùn)行的平臺(tái)的細(xì)節(jié)中。這些標(biāo)準(zhǔn)接口被稱為Apllication ProgrammingInterfaces(or APIs),OpenGL是其中之一。這一章簡(jiǎn)要介紹OpenGL,描述它如何與底層的圖形子系統(tǒng)關(guān)聯(lián),并且提供一些OpenGL的起源和演化歷史。
生成一個(gè)高效能并且高容量的產(chǎn)品通常需要兩個(gè)東西:可伸縮性(scalability)和并行性(parallelism)。在工廠中,這兩個(gè)東西通過使用產(chǎn)品線(production lines)來達(dá)成。說來就是一個(gè)工人安裝汽車的引擎,另一個(gè)安裝車門,再另一個(gè)安裝車輪。通過將產(chǎn)品的生產(chǎn)階段進(jìn)行重疊,每一個(gè)階段都由一個(gè)專業(yè)的專家來專門完成這個(gè)任務(wù),這樣每一個(gè)階段就變得更高效,然后整體生產(chǎn)效率就會(huì)提升。同樣,通過在同一時(shí)間制作很多汽車,一個(gè)工廠可以讓多個(gè)工人專門安裝引擎,或者多個(gè)工人專門安裝車輪,這樣多輛汽車可以同時(shí)運(yùn)作在產(chǎn)品線上,每輛車都處在完工的不同階段。
計(jì)算機(jī)圖形是同樣的道理。我們的程序發(fā)送命令給OpenGL,然后OpenGL以一種盡可能高效的方式將命令發(fā)送給底層的圖形硬件來產(chǎn)生預(yù)期的結(jié)果。在圖形硬件上可能有很多命令排隊(duì)等待執(zhí)行(專業(yè)術(shù)語稱為in flight),其中一些命令可能是完成了一部分的。一個(gè)處于后續(xù)階段的命令可以和一個(gè)處于前期階段的命令被并發(fā)執(zhí)行,這樣它們的執(zhí)行就重疊了。此外,計(jì)算機(jī)圖形通常由很多非常相似的重復(fù)性任務(wù)組成(例如計(jì)算一個(gè)像素該為什么顏色)并且這些任務(wù)都彼此獨(dú)立--意即,一個(gè)像素的顏色與另外一個(gè)像素的顏色沒有任何關(guān)系。就好像一個(gè)車間可以同時(shí)制造多個(gè)汽車,所以O(shè)penGL可以把你給他的工作拆解開然后用它的基礎(chǔ)元素并行完成。通過組合管線(pipelining)和并行(parallelism),現(xiàn)代圖形處理器超乎想象的性能就被實(shí)現(xiàn)了。
OpenGL的目的是在我們的應(yīng)用程序和底層的圖形子系統(tǒng)中間提供一個(gè)抽象層(abstractionlayer),圖形子系統(tǒng)通常是一個(gè)硬件加速器(由一個(gè)或多個(gè)自定義的高性能處理器和專用內(nèi)存、顯示輸出等等構(gòu)成)。這個(gè)抽象層可以使我們的應(yīng)用程序不必知曉誰是制造的圖形處理器(或者叫GPU - 圖形處理單元)、它如何工作、它工作得好不好。當(dāng)然我們的應(yīng)用程序仍然可以獲知這些信息,重要的是我們的應(yīng)用程序不必如此。作為一個(gè)設(shè)計(jì)原則,OpenGL必須在抽象層次的過高與過低之間取得平衡。一方面,它必須隱藏不同制造商的產(chǎn)品的區(qū)別(或者同一廠商的不同產(chǎn)品)和平臺(tái)相關(guān)的特性,比如:顯示屏分辨率、處理器架構(gòu)、安裝的操作系統(tǒng)等等。另一方面,它的抽象層次要低到可以讓程序員獲得底層硬件的訪問權(quán)限并且充分利用它。如果OpenGL展現(xiàn)過高的抽象層次,這樣它就可以很容易地用來創(chuàng)造符合它的樣式的程序,但卻很難使用到它未包含的圖形硬件的高級(jí)特性。這種高層次抽象的樣式有一些軟件用到,如:游戲引擎--為了讓基于它構(gòu)建的游戲訪問到新的圖形硬件特性通常需要對(duì)引擎做出很大量的改變。如果抽象層次過低,應(yīng)用程序需要關(guān)心它們所運(yùn)行的平臺(tái)的架構(gòu)特性。低層次抽象在比如視頻游戲主機(jī)中比較普遍,但這種抽象層次的圖形庫(kù)不能跨平臺(tái)支持從移動(dòng)手機(jī)到游戲的個(gè)人電腦甚至高性能專業(yè)的圖形工作站。
隨著技術(shù)的發(fā)展,計(jì)算機(jī)圖形進(jìn)行了越來越多的研究,最佳實(shí)踐被開發(fā)出來,瓶頸和需求在變化,所以O(shè)penGL也必須不斷變化趕上時(shí)代。
大多數(shù)OpenGL實(shí)現(xiàn)都基于當(dāng)前最先進(jìn)的圖形處理單元,可進(jìn)行多個(gè)每秒萬億次浮點(diǎn)運(yùn)算的運(yùn)算能力、擁有好多G每秒吞吐量好幾百G的內(nèi)存、并且可以驅(qū)動(dòng)多個(gè)幾百萬像素高頻刷新的顯示器。GPU也超級(jí)靈活,以至于可以處理跟圖形完全不沾邊的任務(wù),比如:物理模擬、人工智能、甚至音頻處理。
如今的GPU由大量的小型可編程處理器(被稱為shader cores)組成,這些shader cores運(yùn)行一種叫做著色器(shaders)的迷你程序。每個(gè)core有相對(duì)較低的吞吐量、在一個(gè)或多個(gè)時(shí)鐘周期內(nèi)處理shader的一條指令,并且一般缺少高級(jí)的特性,比如: 無序執(zhí)行、分支預(yù)測(cè)、超標(biāo)量技術(shù)等等。但每個(gè)GPU都可能包含從幾十個(gè)到幾千個(gè)這樣的core,當(dāng)它們聚集在一起時(shí)可以完成一個(gè)巨量的工作。圖形系統(tǒng)被分解為多個(gè)階段(stages),每個(gè)階段被用一個(gè)shader或者固定功能函數(shù)(fixed-function)、可能可配置的處理區(qū)塊表示。圖示1.1展示了一個(gè)精簡(jiǎn)的圖形管線的概要。
- 通信原理第七版習(xí)題 0次下載
- 地球編年史第七部完結(jié)日電子版下載 0次下載
- LabVIEW寶典的源代碼合集免費(fèi)下載 112次下載
- Qt OpenGL中文使用教程免費(fèi)下載 39次下載
- 蘋果iPhone 7的原廠原理圖和元件圖及維修寶典資料免費(fèi)下載 448次下載
- OpenGL教程之《OpenGL超級(jí)寶典》中文第七版資料免費(fèi)下載 0次下載
- openGL運(yùn)行環(huán)境詳細(xì)資料免費(fèi)下載 5次下載
- 電力系統(tǒng)繼電保護(hù)第七章-微機(jī)保護(hù)概述(課件)下載.ppt 0次下載
- LED電源的PCB設(shè)計(jì)寶典資料下載 10次下載
- 電路原理(第七版)part4 0次下載
- 電路原理(第七版)part1 0次下載
- 電路原理(第七版)part2 0次下載
- 電路原理(第七版)part3 0次下載
- 高頻電子線路第七章答案
- 驅(qū)動(dòng)程序超級(jí)寶典
- 安建采用7層光罩工藝的第七代12-inch 1200V-25A IGBT晶圓 977次閱讀
- 用超級(jí)電容放個(gè)電?超級(jí)電容器結(jié)構(gòu)詳解 7211次閱讀
- 超級(jí)電容電池原理_超級(jí)電容電池的弊端 1.3w次閱讀
- 機(jī)器學(xué)習(xí)入門寶典《統(tǒng)計(jì)學(xué)習(xí)方法》的介紹 4682次閱讀
- Android OpenGL ES開發(fā):投影和相機(jī)視圖創(chuàng)建和應(yīng)用 1296次閱讀
- 如何把OpenGL中3D坐標(biāo)轉(zhuǎn)換成2D坐標(biāo) 8611次閱讀
- OpenGL中的深度、深度緩存、深度測(cè)試 3732次閱讀
- OpenGL繪制圖形單元的技巧介紹 2716次閱讀
- 初學(xué)OpenGL:什么是繪制上下文 2471次閱讀
- 簡(jiǎn)單解析OpenGL ES為緩存提供數(shù)據(jù)的7個(gè)步驟 5642次閱讀
- opengl主要功能介紹 7831次閱讀
- win10超級(jí)終端在哪里?SecureCRT的使用 10.1w次閱讀
- keil uvision2下載|keil uvision2漢化免費(fèi)版下載 1.1w次閱讀
- AUTOCAD2009免費(fèi)下載中文版 CAD2009簡(jiǎn)體中文下載及安裝方法 1.3w次閱讀
- Intel第七代酷睿處理器Kaby Lake詳解 1.5w次閱讀
下載排行
本周
- 1TC358743XBG評(píng)估板參考手冊(cè)
- 1.36 MB | 330次下載 | 免費(fèi)
- 2開關(guān)電源基礎(chǔ)知識(shí)
- 5.73 MB | 6次下載 | 免費(fèi)
- 3100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 4嵌入式linux-聊天程序設(shè)計(jì)
- 0.60 MB | 3次下載 | 免費(fèi)
- 5基于FPGA的光纖通信系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 0.61 MB | 2次下載 | 免費(fèi)
- 6基于FPGA的C8051F單片機(jī)開發(fā)板設(shè)計(jì)
- 0.70 MB | 2次下載 | 免費(fèi)
- 751單片機(jī)窗簾控制器仿真程序
- 1.93 MB | 2次下載 | 免費(fèi)
- 8基于51單片機(jī)的RGB調(diào)色燈程序仿真
- 0.86 MB | 2次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33564次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21548次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德爾著
- 0.00 MB | 6653次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537796次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191185次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183278次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論