一南吮、OpenGL 簡介
- 什么是OpenGL戴尸?摘抄自極客雨露--iOS OpenGL 學(xué)習(xí)
1宪哩、OpenGL是一種應(yīng)用程序編程接口,它是一種可以對圖形硬件設(shè)備特性進(jìn)行訪問的軟件庫心肪。
2菩帝、OpenGL被設(shè)計為一個現(xiàn)代化的、硬件無關(guān)的接口族檬,因此我們可以在不考慮計算機操作系統(tǒng)或窗口系統(tǒng)的前提下歪赢,在多種不同的圖形硬件系統(tǒng)上,或者完全通過軟件的方式實現(xiàn)OpenGL接口单料。
3埋凯、OpenGL自身并不包含任何執(zhí)行窗口任務(wù),或者處理用戶輸入的函數(shù)扫尖。
4白对、OpenGL也沒有提供任何用于表達(dá)三維物體模型,或者讀取圖像文件的操作换怖。我們需要通過一系列的幾何圖元(點甩恼,線段,三角形沉颂,以及patch)來創(chuàng)建三維空間物體条摸!
(ps: 2D + 透視 = 3D)
5、OpenGL API是過程性的铸屉,不是描述性的钉蒲,即OpenGL不是面向?qū)ο蟮模設(shè)penGL無法利用面向?qū)ο蟮奶匦蕴健J褂玫臅r候只需要:程序與OpenGL的實現(xiàn)鏈接就可以了子巾!
6、OpenGL的實現(xiàn)可以是軟件實現(xiàn)小压,也可以是硬件實現(xiàn)线梗。
軟件實現(xiàn):是對OpengGL函數(shù)調(diào)用時作出的響應(yīng)并創(chuàng)建二維或三維圖像的函數(shù)庫。
硬件實現(xiàn):則是通過設(shè)置能夠繪制圖形或圖像的圖形卡驅(qū)動程序
硬件實現(xiàn)要比軟件實現(xiàn)快得多5∫妗仪搔!
(ps: 簡單理解就是開發(fā)的圖形庫)
- OpenGL可以用來干什么?
- 1.視頻,圖形,圖片處理
- 2.2D/3D 游戲引擎開發(fā)
- 3.科學(xué)可視化
- 4.醫(yī)學(xué)軟件開發(fā)
- 5.CAD(計算機輔助技術(shù))
- 6.虛擬實境(AR,VR)
- 7.AI ?工智能
-
了解客戶端/服務(wù)端的概念蜻牢?
-
- OpenGL 與 OpenGL ES 的關(guān)系
OpenGL 與 OpenGL ES 的主要區(qū)別,在于OpenGL ES 主要針對嵌入式設(shè)備使?
- 1烤咧、OpenGL ES是OpenGL的子集,針對手機抢呆、PDA和游戲主機嵌入式設(shè)備而設(shè)計
- 2煮嫌、OpenGL ES 是從 OpenGL 裁剪定制而來的,去除了 glBegin/glEnd抱虐,四邊形(GL_QUADS)昌阿、多邊形(GL_POLYGONS)等復(fù)雜圖元等許多非絕對必要的特性,剩下最核心有用的部分。
可以理解成:OpenGL ES是一個在移動平臺上能夠支持 OpenGL 最基本功能的精簡規(guī)范懦冰。
二灶轰、OpenGL基本知識了解
-
著色器渲染流程
-
2.什么是管線?
在OpenGL 下渲染圖形,就會有經(jīng)歷一個一個節(jié)點.而這樣的操作可以理解管線.大家可以想象成流水線.每個任務(wù)類似流水線般執(zhí)行.任務(wù)之間有先后順序. 管線是一個抽象的概念刷钢,之所以稱之為管線是因為顯卡在處理數(shù)據(jù)的時候是按照一個固定的順序來的笋颤,而且嚴(yán)格按照這個順序。就像水從一根管子的一端流到另一端内地,這個順序是不能打破的
- 頂點著色器(VertexShader)
一般用來處理圖形每個頂點變換(旋轉(zhuǎn)/平移/投影等)
頂點著色器是OpenGL中用于計算頂點屬性的程序伴澄。頂點著色器是逐頂點運算的程序,也就是說每個頂點數(shù)據(jù)都會執(zhí)行一次頂點著色器瓤鼻,當(dāng)然這是并行的秉版,并且頂點著色器運算過程中無法訪問其他頂點的數(shù)據(jù)雹熬。
一般來說典型的需要計算的頂點屬性主要包括頂點坐標(biāo)變換拗馒、逐頂點光照運算等等厂抖。頂點坐標(biāo)由自身坐標(biāo)系轉(zhuǎn)換到歸一化坐標(biāo)系的運算,就是在這里發(fā)生的祭犯。
- 片元著色器程序(FragmentShader)
一般用來處理圖形中每個像素點顏色計算和填充
片段著色器是OpenGL中用于計算片段(像素)顏色的程序。片段著色器是逐像素運算的程序滚停,也就是說每個像素都會執(zhí)行一次片段著色器沃粗,當(dāng)然也是并行的。
- 5.GLSL(OpenGL Shading Language)
OpenGL著色語言(OpenGL Shading Language)是用來在OpenGL中著色編程的語言键畴,也即開發(fā)人員寫的短小的自定義程序最盅,他們是在圖形卡的GPU (Graphic Processor Unit圖形處理單元)上執(zhí)行的,代替了固定的渲染管線的一部分起惕,使渲染管線中不同層次具有可編程性涡贱。比如:視圖轉(zhuǎn)換、投影轉(zhuǎn)換等惹想。GLSL(GL Shading Language)的著色器代碼分成2個部分:Vertex Shader(頂點著色器)和Fragment(片斷著色器)
- 6.光柵化(Rasterization)
- 是把頂點數(shù)據(jù)轉(zhuǎn)換為片元的過程问词,具有將圖轉(zhuǎn)化為一個個柵格組成的圖象的作用,特點是每個元素對應(yīng)幀緩沖區(qū)中的一像素嘀粱。
- 光柵化就是把頂點數(shù)據(jù)轉(zhuǎn)換為片元的過程激挪。片元中的每一個元素對應(yīng)于幀緩沖區(qū)中的一個像素。
- 光柵化其實是一種將幾何圖元變?yōu)槎S圖像的過程锋叨。該過程包含了兩部分的工作垄分。第一部分工作:決定窗口坐標(biāo)中的哪些整型柵格區(qū)域被基本圖元占用;第二部分工作:分配一個顏色值和一個深度值到各個區(qū)域娃磺。光柵化過程產(chǎn)生的是片元
- 把物體的數(shù)學(xué)描述以及與物體相關(guān)的顏色信息轉(zhuǎn)換為屏幕上用于對應(yīng)位置的像素及用于填充像素的顏色薄湿,這個過程稱為光柵化,這是一個將模擬信號轉(zhuǎn)化為離散信號的過程
- 7.紋理
紋理可以理解為圖片. 大家在渲染圖形時需要在其編碼填充圖片,為了使得場景更加逼真.而這里使用的圖片,就是常說的紋理.但是在OpenGL,我們更加習(xí)慣叫紋理,而不是圖片.
- 8.混合(Blending)
在測試階段之后,如果像素依然沒有被剔除嘿般,那么像素的顏色將會和幀緩沖區(qū)中顏色附著上的顏色進(jìn)行混合段标,混合的算法可以通過OpenGL的函數(shù)進(jìn)行指定。但是OpenGL提供的混合算法是有限的炉奴,如果需要更加復(fù)雜的混合算法逼庞,一般可以通過像素著色器進(jìn)行實現(xiàn),當(dāng)然性能會比原生的混合算法差一些瞻赶。
- 9.OpenGL 圖元
- 1.點
- 2.線
- 3.線帶
- 4.線環(huán)
- 5.三角形
- 6.三角形帶
- 7.三角形扇