2、>(red,green,blue,alpha);函數(shù)名中的x表示參數(shù)的數(shù)目,當(dāng)它等于3的時候,三個參數(shù)分別代表R、G、B值,alpha值缺省為1.0;當(dāng)它等于4的時候,還包括了Alpha值,其范圍從0.0到1.0。函數(shù)名中的t指定參數(shù)數(shù)據(jù)的類型,可以取b、d、f、i、s、ub、ui或us,它們分別代表字節(jié)型、雙精度型、浮點(diǎn)型、整型、短整型、無符號字節(jié)型和無符號短整型。9.1顏色OpenGL顏色模式RGB(RGBA)模式常用的指定顏色的函數(shù)是glColor3f,其中每個顏色分量的值在[0.0,1.0]范圍內(nèi)。還有一個函數(shù)glColor3ub,這個版本使用的顏色分量的取值
3、范圍是0到255之間的無符號數(shù)。9.1顏色OpenGL顏色模式顏色表模式在顏色表模式(Color_IndexMode)下,可以調(diào)用glIndex*()函數(shù)從顏色表中選取當(dāng)前顏色,其函數(shù)形式為:voidglIndex{sifd}(TYPEc);voidglIndex{sifd}v(TYPE*c);參數(shù)值c用于設(shè)置當(dāng)前顏色索引值,即調(diào)色板號,若值大于顏色位面數(shù)時則取模。9.1顏色著色模型繪制線框或填充多邊形時,可用純色(恒定著色)和平滑(Gouraud著色)兩種著色模型。voidglShadeModel(GLenummode)參數(shù)mode?。杭兩獹L_SMOOTH(默認(rèn))
4、平滑GL_FLAT9.1顏色例子紅皮書smooth.c9.2光照場景中的光類型點(diǎn)光源全局光照添加光照步驟9.2光照場景中的光類型環(huán)境光(AmbientLight)散射光(DiffuseLight)鏡面光(SpecularLight)輻射光(EmittedLight)9.2光照場景中的光類型環(huán)境光環(huán)境光有光源,但是由于被周圍的環(huán)境,如地面、天空、墻壁等多次反射,變得無法確定其方向。環(huán)境光均勻地從周圍環(huán)境入射至景物表面并等量地向各個方向反射出去。一般說來,房間里的環(huán)境光成分要多些,戶外的相反要少得多,因?yàn)榇蟛糠止獍聪嗤姆较蛘丈?,而在戶外很少有其他物體反射的光。9.2光照
5、場景中的光類型散射光漫射光來自某個方向,它垂直于物體時比傾斜時更明亮。一旦它照射到物體上,則在各個方向上均勻地發(fā)散出去。于是,無論視點(diǎn)在哪里它都一樣亮。來自特定位置和特定方向的任何光,都可能有散射成分。9.2光照場景中的光類型鏡面光鏡面光也具有方向性,但被物體強(qiáng)烈地反射到另一個特定的方向。如一個點(diǎn)光源照射一個金屬球時會在球面上形成一塊特別亮的區(qū)域,呈現(xiàn)所謂“高光(Highlight)”,它是光源在金屬球面上產(chǎn)生的鏡面反射光。對于較光滑物體,其鏡面反射光的高光區(qū)域小而亮;相反,粗糙表面的鏡面反射光呈發(fā)散狀態(tài),其高光區(qū)域大而不亮。9.2光照場景中的光類型輻射光輻射光是最簡
6、單的一種光,它直接從物體發(fā)出并且不受任何光源影響。9.2光照場景中的光類型在OpenGL中,任何一種光源都由三種光照成分組成:環(huán)境光、散射光和鏡面光,當(dāng)然光源本身還有可能發(fā)出輻射光。光是一種波,而顏色僅僅是我們可以看見的一種光波,每種光照成分都是由RGBA值定義的。169.2光照點(diǎn)光源在OpenGL場景描述中可以包含多個點(diǎn)光源,光源的各種屬性設(shè)置使用下面的函數(shù)指定。voidglLight{if}(GLenumlight,GLenumpname,TYPEparam);voidglLight{if}v(GLenumlight,GLenumpname,TYPE*param)
7、;第一個參數(shù)是一個符號常數(shù),指定設(shè)置的是哪個光源的參數(shù)。第二個參數(shù)指定了設(shè)置的是哪一個參數(shù)。第三個參數(shù)是一個類型數(shù)組,用于指定相應(yīng)的參數(shù)。179.2光照pname取值默認(rèn)值含義GL_AMBIENT(0.0,0.0,0.0,1.0)光源中環(huán)境光分量GL_DIFFUSE(1.0,1.0,1.0,1.0)或(0.0,0.0,0.0,1.0)光源中漫反射光分量GL_SPECULAR(1.0,1.0,1.0,1.0)或(0.0,0.0,0.0,1.0)光源中鏡面光分量GL_POSITION(0.0,0.0,1.0,0.0)光源的坐標(biāo)位置GL_SPOT_DIRE