![]() |
![]() |
![]() |
Параметры
освещения
Установка параметрпв
освещения осуществляется подобно тому, как это делалось в предыдущем уроке.
Но здесь мы храним все параметры для тога, чтобы можно было управлять освещенностью
изображения. Немного позже разработаем диалог, с помощью которого пользователь
программы сможет изменять настройки освещения, а сейчас введите коды функции
SetLight:
void COGView::SetLight()
{
//======
Обе поверхности изображения участвуют
//======
при вычислении цвета пикселов
//======
при учете параметров освещения
glLightModeli(GL_LIGHT_MODEL_TWO_SIDE,
1);
//======
Позиция источника освещения
//======
зависит от размеров объекта
float fPos[] =
{
(m_LightParam[0]-50)*m_fRangeX/100,
(m_LightParam[l]-50)*m_fRangeY/100,
(m_LightParam[2]-50)*m_fRangeZ/100,
l.f
};
glLightfv(GL_LIGHTO,
GL_POSITION, fPos);
/1
======
Интенсивность окружающего освещения
float f = m_LightParam[3]/100.f;
float fAmbient[4] = { f, f, f, O.f };
glLightfv(GL_LIGHTO,
GL_AMBIENT, fAmbient);
//======
Интенсивность рассеянного света
f
= m_LightParam[4]/100.f;
float
fDiffuse[4] = { f, f, f, O.f };
glLightfv(GL_LIGHTO,
GL_DIFFUSE, fDiffuse);
//======
Интенсивность отраженного света
f
= m_LightParam[5]/100.f;
float
fSpecular[4] = { f, f, f, 0.f };
glLightfv(GL_LIGHTO,
GL_SPECULAR, fSpecular);
//======
Отражающие свойства материала
//======
для разных компонентов света
f
= m_LightParam[6]/100.f;
float
fAmbMat[4] = { f, f, f, 0.f };
glMaterialfv(GL_FRONT_AND_BACK,
GL_AMBIENT, fAmbMat);
f
= m_LightParam[7]/100.f;
float
fDifMat[4] = { f, f, f, 1.f };
glMaterialfv(GL_FRONT_AND_BACK,
GL_DIFFUSE, fDifMat);
f
= m_LightParam[8]/100.f;
float
fSpecMat[4] = { f, f, f, 0.f };
glMaterialfv(GL_FRONT_AND_BACK,
GL_SPECULAR, fSpecMat);
//======
Блесткость материала
float fShine = 128 * m_LightParam[9]/100.f;
glMaterialf(GL
FRONT AND BACK, GL SHININESS, fShine);
//======
Излучение света материалом
f
= m_LightParam[10]/100.f;
float
f Emission [4] = { f , f , f , 0 . f } ;
glMaterialfv(GL_FRONT_AND_BACK, GL_EMISSION, fEmission) ;
}
![]() |
![]() |
![]() |