OpenGL點(diǎn)光源

OpenGL點(diǎn)光源

ID:36737311

大?。?59.00 KB

頁(yè)數(shù):36頁(yè)

時(shí)間:2019-05-14

OpenGL點(diǎn)光源_第1頁(yè)
OpenGL點(diǎn)光源_第2頁(yè)
OpenGL點(diǎn)光源_第3頁(yè)
OpenGL點(diǎn)光源_第4頁(yè)
OpenGL點(diǎn)光源_第5頁(yè)
資源描述:

《OpenGL點(diǎn)光源》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)

1、OpenGL點(diǎn)光源????在OpenGL場(chǎng)景描述中可以包含多個(gè)點(diǎn)光源,光源的各種屬性設(shè)置使用函數(shù):???????voidglLight{if}(GLenumlight,GLenumpname,TYPEparam);???????voidglLight{if}v(GLenumlight,GLenumpname,TYPE*param);指定。其中,參數(shù)light指定進(jìn)行參數(shù)設(shè)置的光源,其取值可以是符號(hào)常量GL_LIGHT0,GL_LIGHT1,…,GL_LIGHT7;參數(shù)pname指定對(duì)光源設(shè)置何種屬性,其取值參見表10-1;參數(shù)

2、param指定對(duì)于光源light的pname屬性設(shè)置何值,非矢量版本中,它是一個(gè)數(shù)值,矢量版本中,它是一個(gè)指針,指向一個(gè)保存了屬性值的數(shù)組。表10-1參數(shù)pname的取值及其含義???(1)點(diǎn)光源的顏色???點(diǎn)光源的顏色由環(huán)境光、漫反射光和鏡面光分量組合而成,在OpenGL中分別使用GL_AMBIENT、GL_DIFFUSE和GL_SPECULAR指定。其中,漫反射光成分對(duì)物體的影響最大。???(2)點(diǎn)光源的位置和類型???點(diǎn)光源的位置使用屬性GL_POSITION指定,該屬性的值是一個(gè)由4個(gè)值組成的矢量(x,y,z,w)。其

3、中,如果w值為0,表示指定的是一個(gè)離場(chǎng)景無(wú)窮遠(yuǎn)的光源,(x,y,z)指定了光源的方向,這種光源被稱為方向光源,發(fā)出的是平行光;如果w值為1,表示指定的是一個(gè)離場(chǎng)景較近的光源,(x,y,z)指定了光源的位置,這種光源稱為定位光源。???(3)聚光燈???當(dāng)點(diǎn)光源定義為定位光源時(shí),默認(rèn)情況下,光源向所有的方向發(fā)光。但通過將發(fā)射光限定在圓錐體內(nèi),可以使定位光源變成聚光燈。屬性GL_SPOT_CUTOFF用于定義聚光截止角,即光錐體軸線與母線之間的夾角,它的值只有錐體頂角值的1/2。聚光截止角的默認(rèn)值為180.0,意味著沿所有方向發(fā)射

4、光線。除默認(rèn)值外,聚光截止角的取值范圍為[0.0,90.0]。GL_SPOT_DIRECTION屬性指定聚光燈光錐軸線的方向,其默認(rèn)值是(0.0,0.0,-1.0),即光線指向z軸負(fù)向。而GL_SPOT_EXPONENT屬性可以指定聚光燈光錐體內(nèi)的光線聚集程度,其默認(rèn)值為0。在光錐的軸線處,光強(qiáng)最大,從軸線向母線移動(dòng)時(shí),光強(qiáng)會(huì)不斷衰減,衰減的系數(shù)是:軸線與照射到頂點(diǎn)的光線之間夾角余弦值的聚光指數(shù)次方。???(4)光強(qiáng)度衰減???屬性GL_CONSTANT_ATTENUATION、GL_LINEAR_ATTENUATION、GL

5、_QUADRATIC_ATTENUATION分別指定了衰減系數(shù)c0,c1和c2,用于指定光強(qiáng)度的衰減。???在OpenGL中,必須明確啟用或禁用光照。默認(rèn)情況下,不啟用光照,此時(shí)使用當(dāng)前顏色繪制圖形,不進(jìn)行法線矢量、光源、光照模型、材質(zhì)屬性的相關(guān)的計(jì)算。要啟用光照,可以使用函數(shù):???????glEnable(GL_LIGHTING);指定了光源的參數(shù)后,需要使用函數(shù):???????glEnable(light);啟用light指定的光源。當(dāng)然也可以用light參數(shù)調(diào)用glDisable函數(shù),禁用light指定的光源。需要特別

6、說明的是,點(diǎn)光源的位置和方向是定義在場(chǎng)景中的,與景物一起通過幾何變換和觀察變換變換到觀察坐標(biāo)系中,因此光源既可以與場(chǎng)景中對(duì)象的相對(duì)位置保持不變,也可以使光源隨觀察點(diǎn)一起移動(dòng)。?OpenGL全局光照????在OpenGL中,還需要設(shè)定全局光照(相當(dāng)于背景光)。OpenGL提供了下面的函數(shù)對(duì)全局光照的屬性進(jìn)行定義。???????voidglLightMode{if}(GLenumpname,TYPEparam);???????voidglLightMode{if}v(GLenumpname,TYPE*param);其中,參數(shù)pna

7、me指定全局光照的屬性,其取值參見表10-2;參數(shù)param指定進(jìn)行設(shè)置的屬性的值。表10-2參數(shù)pname的取值及含義???屬性GL_LIGHT_MODEL_AMBIENT指定OpenGL場(chǎng)景中的背景光,如果不指定,系統(tǒng)使用低強(qiáng)度的白色(0.2,0.2,0.2,1.0)光。???鏡面反射時(shí)需要幾個(gè)矢量參數(shù),包括從物體表面到觀察位置的矢量V,它指出表面位置與觀察位置的關(guān)系。矢量V的默認(rèn)方向?yàn)檎齴方向(0.0,0.0,1.0),如果不希望用默認(rèn)值而使用位于觀察坐標(biāo)原點(diǎn)的實(shí)際觀察位置來計(jì)算V,則將GL_LIGHT_MODEL_LO

8、CAL_VIEWER屬性值指定為GL_TRUE。???在有些應(yīng)用中,需要看到物體的后向面,例如實(shí)體的內(nèi)部剖視圖。此時(shí)需要打開雙面光照,即對(duì)物體的前向面和后向面都進(jìn)行光照計(jì)算。???在光照計(jì)算中,通常是分別計(jì)算環(huán)境光、表面散射光、漫反射光和鏡面反射光的貢獻(xiàn),然后將其疊加。默認(rèn)情

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。