Параметры освещения
Установка параметров освещения осуществляется подобно тому, как это делалось в предыдущем уроке. Но здесь мы храним все параметры для тога, чтобы можно было управлять освещенностью изображения. Немного позже разработаем диалог, с помощью которого пользователь программы сможет изменять настройки освещения, а сейчас введите коды функции 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); }