-
大小: 809KB文件類型: .rar金幣: 2下載: 0 次發(fā)布日期: 2021-05-21
- 語言: 其他
- 標(biāo)簽:
資源簡(jiǎn)介
本代碼是用OPENGL實(shí)現(xiàn)光線跟蹤算法,從影響光照效果的因素著手,主要演示了靜態(tài)多光源,材料屬性,動(dòng)態(tài)多光源三個(gè)方面。

代碼片段和文件信息
#include?
#include?
#include?
#include?
//靜態(tài)多光源部分
void?init(void)
{
?glShadeModel?(GL_SMOOTH);
?glClearColor?(0.2?0.2?0.2?1.0);
?????//材料屬性值設(shè)置
?????GLfloat?mat_specular[]?=?{?1.0?1.0?1.0?1.0?};
?????GLfloat?mat_shininess[]?=?{?50.0?};
?????//glMaterialfv的調(diào)用
?glMaterialfv(GL_FRONT?GL_SPECULAR?mat_specular);
?????glMaterialfv(GL_FRONT?GL_SHININESS?mat_shininess);
?????//環(huán)境光,散射光和鏡面光參數(shù)
?GLfloat?light_ambient[]?=?{?0.0?0.0?1.0?1.0?};
?????GLfloat?light_diffuse[]?=?{?1.0?1.0?1.0?1.0?};
?????GLfloat?light_specular[]?=?{?1.0?1.0?1.0?1.0?};
?GLfloat?light_position[]?=?{?1.0?1.0?1.0?0.0?};
?GLfloat?light1_ambient[]?=?{?1.0?0.0?0.0?1.0?};
?????GLfloat?light1_diffuse[]?=?{?1.0?0.0?0.0?1.0?};
?????GLfloat?light1_specular[]?=?{?1.0?1.0?1.0?1.0?};
?????GLfloat?light1_position[]?=?{?0.0?2.0?2.0?1.0?};
?????//衰減因子
?glLightf(GL_LIGHT0?GL_CONSTANT_ATTENUATION?2.0);
?????glLightf(GL_LIGHT0?GL_LINEAR_ATTENUATION?1.0);
?????glLightf(GL_LIGHT0?GL_QUADRATIC_ATTENUATION?0.5);
?glLightf(GL_LIGHT1?GL_CONSTANT_ATTENUATION?1.5);
?????glLightf(GL_LIGHT1?GL_LINEAR_ATTENUATION?0.5);
?????glLightf(GL_LIGHT1?GL_QUADRATIC_ATTENUATION?0.2);
?//LIGHT1聚光燈參數(shù)
?????GLfloat?spot_direction[]?=?{?1.0?-1.0?-1.0?};
?glLightf(GL_LIGHT1?GL_SPOT_CUTOFF?45.0);
?????//glLightfv的調(diào)用
?glLightfv(GL_LIGHT0?GL_AMBIENT?light_ambient);
?????glLightfv(GL_LIGHT0?GL_DIFFUSE?light_diffuse);
?????glLightfv(GL_LIGHT0?GL_SPECULAR?light_specular);
?????glLightfv(GL_LIGHT0?GL_POSITION?light_position);
?glLightfv(GL_LIGHT1?GL_AMBIENT?light1_ambient);
?????glLightfv(GL_LIGHT1?GL_DIFFUSE?light1_diffuse);
?????glLightfv(GL_LIGHT1?GL_SPECULAR?light1_specular);
?????glLightfv(GL_LIGHT1?GL_POSITION?light1_position);
?glLightfv(GL_LIGHT1?GL_SPOT_DIRECTION?spot_direction);
?????glLightf(GL_LIGHT1?GL_SPOT_EXPONENT?5.0);
?//觀察點(diǎn)設(shè)置
?glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER?GL_FALSE);
?????//glEnable的調(diào)用
?????glEnable(GL_DEPTH_TEST);
?????glEnable(GL_LIGHTING);
?????glEnable(GL_LIGHT0);
?glEnable(GL_LIGHT1);
}
void?display(void)
{
?????glClear?(GL_COLOR_BUFFER_BIT?|?GL_DEPTH_BUFFER_BIT);
?????glutSolidSphere?(1.0?20?16);
?????glFlush?();
}
//材料部分
void?init2(void)
{
?glShadeModel?(GL_SMOOTH);
?glClearColor?(0.2?0.2?0.2?1.0);
?glClear(GL_COLOR_BUFFER_BIT?|?GL_DEPTH_BUFFER_BIT);
?????
?????//環(huán)境光,散射光和鏡面光參數(shù)
?GLfloat?light_ambient[]?=?{?0.0?0.0?1.0?1.0?};
?????GLfloat?light_diffuse[]?=?{?1.0?1.0?1.0?1.0?};
?????GLfloat?light_specular[]?=?{?1.0?1.0?1.0?1.0?};
?GLfloat?light_position[]?=?{?1.0?1.0?1.0?0.0?};
?????//glLightfv的調(diào)用
?glLightfv(GL_LIGHT0?GL_AMBIENT?light_ambient);
?????glLightfv(GL_LIGHT0?GL_DIFFUSE?light_diffuse);
?????glLightfv(GL_LIGHT0?GL_SPECULAR?light_specular);
?????glLightfv(GL_LIGHT0?GL_POSITION?light_position);
?//觀察點(diǎn)設(shè)置
?glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER?GL_FALS
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件???????8130??2008-12-23?12:04??用OPENGL實(shí)現(xiàn)光線跟蹤算法\光線跟蹤.cpp
?????文件????1208832??2009-03-25?17:52??用OPENGL實(shí)現(xiàn)光線跟蹤算法\光線跟蹤算法.ppt
?????文件?????242688??2008-12-23?11:59??用OPENGL實(shí)現(xiàn)光線跟蹤算法\圖形學(xué)實(shí)驗(yàn)說明及效果展示.doc
?????目錄??????????0??2009-03-25?17:52??用OPENGL實(shí)現(xiàn)光線跟蹤算法
-----------?---------??----------?-----??----
??????????????1459650????????????????????4
評(píng)論
共有 條評(píng)論