opengl總結報告
OpenGL總結
一.OpenGL是做什么的
一種圖形硬件的接口。而不是像C和C++一樣的編程語(yǔ)言,更像是一個(gè)運行庫,提供一些預先封裝的函數。
二.OpenGL的主要功能是什么
建模,變換,顏色模式設置,光照和材質(zhì)設置,紋理映射,位圖顯示和圖像。
三.OpenGL的體系結構是什么
最底層為圖形硬件,第二層為操作系統,第三層為窗口系統,第四層為OpenGL,第五層為應用軟件。
四.怎么樣利用OpenGL來(lái)實(shí)現我們想要做的事情
首先要明白一點(diǎn),OpenGL是一個(gè)與平臺無(wú)關(guān)的三維圖形接口,操作系統必須提供像素格式管理和渲染環(huán)境管理。因此要使用OpenGL來(lái)做我們想做的事情的時(shí)候,一定要先為OpenGL搭建一個(gè)窗口環(huán)境。在這個(gè)窗口環(huán)境中,我們才能夠使用OpenGL來(lái)實(shí)現我們自己的目的。
另外要注意的是OpenGL應用的不是保留模式,而是直接模式。即我們去操作的并非是已經(jīng)封裝好的一些建好的圖形信息,而僅是相當于操作一個(gè)圖形界面。也就是說(shuō)如果我們要畫(huà)一個(gè)復雜的形體,我們要把這個(gè)形體的幾何信息,包括點(diǎn)、線(xiàn)和面的一些信息包括進(jìn)去,然后使用一定的方法,把這些基本的信息合起來(lái),構成我們要創(chuàng )建的那個(gè)物體。
五.繪制圖元能干什么
此處我們當明白,OpenGL能夠繪制復雜和有趣的圖形,但這些圖形都是由幾個(gè)為數不多的基本圖形元素構建而成的。所以,能夠繪制圖元是我們構建一個(gè)復雜有趣圖形的一個(gè)基礎。這些基本的圖元,包括點(diǎn)、線(xiàn)和面。
六.變換能干什么
當我們繪制出一個(gè)復雜或者簡(jiǎn)單圖形的時(shí)候,我們要把這個(gè)圖形顯示到我們的電腦屏幕上。這個(gè)時(shí)候我們可能會(huì )需要用到變換,變換的目的是讓我們能夠從一個(gè)合適的角度,觀(guān)察到我們對圖形中所關(guān)注的那部分。變換包括,視圖變換,模型變換,投影變換。經(jīng)過(guò)這幾個(gè)變換中的一個(gè)變換、幾個(gè)變換或者幾種變換的相互組合,我們可以得到我們想要達到的效果。
七.光照能干什么
我們繪制圖形的時(shí)候要深切地知道一個(gè)事情。那就是我們做出的圖形可能需要有3D效果,或者說(shuō)需要讓我們做出來(lái)的模型更加的有立體感,并和實(shí)際的物體盡量的接近。這個(gè)時(shí)候,我們可能要加上光照。光照讓我們做出的模型更加立體。
光照模型、明暗處理、光源設置、材質(zhì)定義。
真實(shí)感圖形繪制是計算機圖形學(xué)的一個(gè)重要組成部分,它綜合利用數學(xué)、物理學(xué)、計算機科學(xué)和其他科學(xué)知識在計算機圖形設備上生成象彩色照片那樣的具有真實(shí)感的圖形。在計算機圖形設備上生成真實(shí)感圖形須完成以下四個(gè)步驟:
一是用建模,即用一定的數學(xué)方法建立所需三維場(chǎng)景的幾何描述,場(chǎng)景的幾何描述直接影響圖形的復雜性和圖形繪制的計算耗費;二是將三維幾何模型經(jīng)過(guò)一定變換轉為二維平面透視投影圖;三是確定場(chǎng)景中所有可見(jiàn)面,運用隱藏面消隱算法將視域外或被遮擋住的不可見(jiàn)面去除;四是計算場(chǎng)景中可見(jiàn)面的顏色,即根據基于光學(xué)物理的光照模型計算可見(jiàn)面投射到觀(guān)察者眼中的光亮度大小和顏色分量,并將它轉換成適合圖形設備的顏色值,從而確定投影畫(huà)面上每一象素的顏色,最終生成圖形。
簡(jiǎn)單光照模型:當光照射到一個(gè)物體表面上時(shí),出現三種情形。
只考慮被照明物體表面的反射光影響,假定物體表面光滑不透明其由理想材料構成,環(huán)境假設為白光照明。
環(huán)境反射,慢反射和鏡面反射。
創(chuàng )建光源,啟動(dòng)光照,明暗處理(在計算機圖形學(xué)中,光滑的曲面表面常用多邊形予以逼近和表示,而每個(gè)小多邊形輪廓(或內部)就用單一的顏色或許多不同的顏色來(lái)勾畫(huà)(或填充),這種處理方式就成為明暗處理。)
材質(zhì):材質(zhì)顏色,材質(zhì)定義
OpenGL用材料對光的紅、綠、藍三原色的反射率來(lái)近似定義材料的顏色。象光源一樣,材料顏色也分成環(huán)境、漫反射和鏡面反射成分,它們決定了材料對環(huán)境光、漫反射光和鏡面反射光的反射程度。
八.顏色能干什么
顏色生成原理,計算機屏幕上每一個(gè)點(diǎn)的顏色都是由監視器內部的電子槍激發(fā)的三束不同顏色的光混合而成。
兩種顏色模式:RGB(RGBA)模式和顏色表模式。在RGB模式下,所有的顏色定義全用RGB三個(gè)值來(lái)表示,有時(shí)也加上alpha值。顏色表模式下,每一個(gè)象素的顏色是用顏色表中的某個(gè)顏色索引值表示,這個(gè)顏色索引值指向了相應的R、G、B值。
glcolor*();glIndex*();
單調著(zhù)色(flat)和平滑著(zhù)色(smooth)
顏色的作用之一是能讓我們做出的圖形的3D效果更好。
用法:
九.混合,抗鋸齒,霧,多邊形偏移,這些干什么
當我們想通過(guò)一個(gè)顏色的物體,看到另一個(gè)顏色物體的時(shí)候,這時(shí)候要使用混合的功能。OpenGL會(huì )把源顏色和目標顏色各自取出,并乘以一個(gè)系數(源顏色乘以的系數稱(chēng)為“源因子”,目標顏色乘以的系數稱(chēng)為“目標因子”),然后相加,這樣就得到了新的顏色。原因子和目標因子是可以通過(guò)glBlendFunc函數來(lái)進(jìn)行設置的。glBlendFunc有兩個(gè)參數,前者表示源因子,后者表示目標因子。
圖形繪制到屏幕時(shí),光柵化圖像通過(guò)離散的像素點(diǎn)來(lái)表示,如此繪制出來(lái)的圖元會(huì )產(chǎn)生鋸齒。而抗鋸齒則是一種處理,通過(guò)這種處理可以在一定程度上消除鋸齒的影響,增強顯示效果。glHint()來(lái)對圖像質(zhì)量和繪制速度之間的權衡作一些控制。
為了讓我們做出來(lái)的圖形和真實(shí)的景物,自然中的景物更加的逼近,要加上一個(gè)特效即霧。有了霧的效果,場(chǎng)景看起來(lái)才會(huì )更加真實(shí)。在OpenGL中,實(shí)現霧的.效果。其工作模式有兩種:線(xiàn)型模式和指數模式。兩種模式是根據霧的濃度變化來(lái)區分的。線(xiàn)型模式中,提供一個(gè)距離視點(diǎn)的開(kāi)始位置和結束位置。從開(kāi)始到結束,霧的濃度越來(lái)越高。濃度變化和距離成正比。指數模式下,霧的濃度隨著(zhù)距離增長(cháng)呈指數增長(cháng)。這種模式常用來(lái)用于煙霧。煙幕效果。開(kāi)啟glEnable(GL_FOG),取消霧的效果glDisable(GL_FOG)。
線(xiàn)框和填充物體重合時(shí),看起來(lái)可能很丑陋;使多邊形偏移,改變其深度值,可以使帶輪廓的物體更美觀(guān)。著(zhù)重顯示實(shí)心物體邊緣時(shí),可以用GL_FILL繪制這個(gè)物體,再用GL_LINE重新繪制這個(gè)物體。
十.為什么使用顯示列表
顯示列表是一組存儲在一起的OpenGL函數,是由一組預先存儲起來(lái)的留待以后調用OpenGL函數語(yǔ)句組成,當調用這張顯示列表時(shí)就依次執行表中所列出的函數語(yǔ)句。
其優(yōu)勢是OpenGL顯示列表的設計能優(yōu)化程序運行性能,尤其是網(wǎng)絡(luò )性能。它被設計成命令高速緩存,而不是動(dòng)態(tài)數據庫緩存。即一旦建立了顯示列表,就不能修改它。因為若顯示列表可以被修改,則顯示列表的搜索,內存管理的執行等開(kāi)銷(xiāo)會(huì )降低性能。如此,也就失去了其最大的優(yōu)勢。顯示列表方式繪圖比瞬時(shí)方式快,尤其是顯示列表方式可以大量地提高網(wǎng)絡(luò )
性能,當通過(guò)網(wǎng)絡(luò )發(fā)出繪圖命令時(shí),由于顯示列表駐留在服務(wù)器中,因而使網(wǎng)絡(luò )的負擔減輕到最小。在單用戶(hù)的機器上,顯示列表同樣可以提高效率。一旦顯示列表被處理成適合于圖形硬件的格式,則不同的OpenGL實(shí)現對命令的優(yōu)化程度也不同。
顯示列表的適用場(chǎng)合。需要注意的是并不是只要調用顯示列表就能優(yōu)化程序性能。因為調用顯示列表本身時(shí)程序也有一些開(kāi)銷(xiāo),若一個(gè)顯示列表太小,這個(gè)開(kāi)銷(xiāo)將超過(guò)顯示列表的優(yōu)越性。
矩陣操作,光柵位圖和圖像,光、材質(zhì)和光照模型、紋理、多邊形的填充模式。
void glNewList(GLuint list,GLenum mode);
void glEndList(void);
void glCallList(GLuint list);
十一. 紋理,和繪制像素,位圖,字體,圖像
當我們想要使繪制出的模型顯得更加得真實(shí),此時(shí)我們可能需要給圖形加上紋理,尤其是真實(shí)感的物體。紋理映射的方式,讓我們在繪制真實(shí)感圖形的時(shí)候,變得簡(jiǎn)單。紋理映射能夠保證在變換多邊形時(shí),多邊形上的紋理圖案也隨之變化。
紋理映射的基本步驟:定義紋理,控制濾波,說(shuō)明映射方式,繪制場(chǎng)景——給出頂點(diǎn)和紋理坐標和幾何坐標。
紋理映射只能在RGBA方式下執行,不能運用于顏色表方式。
計算機保存圖象的方法有兩種:矢量圖和像素圖。矢量圖保存了圖象中每一個(gè)幾何物體的位置、形狀、大小等信息。像素圖是將完整的圖像縱橫分為若干行、列,這些行列使得圖象被分割為很細小的分塊,每一分塊稱(chēng)為像素,保存每一像素的顏色也就保存了整個(gè)圖像。
glReadPixels:讀取一些像素,把已經(jīng)繪制好的像素(可能已經(jīng)被保存到顯卡的顯存中)讀到內存。
glDrawPixels:繪制一些像素,把內存中一些數據作為像素數據,進(jìn)行繪制。
glCopyPixels:復制一些像素,把已經(jīng)繪制好的像素從一個(gè)位置復制到另一個(gè)位置。
OpenGL除去點(diǎn),線(xiàn),多邊形,的另外兩種重要的數據類(lèi)型:位圖和圖像。這兩種數據都是以象素矩陣形式存儲,即用一個(gè)矩形數組來(lái)表示某一位圖或圖像。二者不同之處是位圖包含每個(gè)象素的一位信息,而圖像數據一般包含每個(gè)象素的多位信息;位圖類(lèi)似于掩碼,
可用于遮掩別的圖像,而圖像數據則簡(jiǎn)單地覆蓋先前已經(jīng)存在的數據或與之混合。
十二. 幀緩存
顏色緩存color buffer其中內容可以是顏色索引或者RGBA數據,如果用OPENGL系統支持立體圖,則有左右兩個(gè)緩存。
深度緩存depth buffer就是Z-BUffER,用于保存像素Z方向的數值,深度大的被深度小的代替,用以實(shí)現消隱。
模板緩存Stencil Buffer用以保持屏幕上某些位置圖形不變,而其他部分重繪。
累計緩存Accumulation buffer只保存RGBA數據,用于合成圖象。
glGetIntegerv()查詢(xún)每個(gè)像素占據的緩存空間的參數。
顏色緩存存儲了顏色索引或RGB顏色數據,還可能存儲了alpha值
支持立體觀(guān)察stereoscopic viewing的OpenGL實(shí)現有左顏色緩存和右顏色緩存,它們分別用于左立體圖象和右立體圖象。
深度緩存,存儲了每個(gè)像素的深度值,通常是離視點(diǎn)的距離,因此深度值大的像素會(huì )被深度值小的像素覆蓋。
累積緩存也存儲RGBA顏色數據,將一系列的圖像合成一幅圖像?梢詫D像進(jìn)行超量采樣,然后對樣本進(jìn)行平均,并將結果寫(xiě)入顏色緩存中,從而實(shí)現場(chǎng)景反走樣,不能將數據直接寫(xiě)入累積緩存,累加操作總是針對一個(gè)矩形塊的,通常是將數據移入或移出顏色緩存。
清空緩存
指定要讀寫(xiě)的顏色緩存
寫(xiě)入glDrawBuffer();
讀取glReadBuffer();
屏蔽緩存:設置掩碼,用于控制寫(xiě)入到指定緩存中的數據。
禁用深度緩存:如果背景很復雜,則在背景繪制之后,禁用深度緩存,繪制新增物體,只要不相互重疊。下一幀時(shí),只需要恢復數據圖像,無(wú)需恢復深度緩存中的值。
【opengl總結報告】相關(guān)文章:
季度個(gè)人總結報告01-19
會(huì )議總結報告范文01-12
月度會(huì )議總結報告08-18
員工述職總結報告10-11
會(huì )議的總結報告范文01-09
會(huì )議組織總結報告結尾01-28
務(wù)虛會(huì )會(huì )議總結報告09-06
會(huì )議總結報告范文通用08-16