g1Lightfv(GL_LIGHTO. GL_POSITIDN. position):
glPopMatrixO:
gluLookAt(…): // set the camera position // задаем положение камеры
draw the object // рисуем объект
glutSwapBuffersO :
}
С другой стороны, для того чтобы источник света перемещался вместе с камерой, необходимо использовать следующий код:
GLfloat pos[] - {0. 0. 0. 1}: glMatrixMode(GL_MODELVIEW): glLoadldentityO:
g 1L i ght fv(GL_LIGHTO. GL_P0SITI0N. position): // light at (0. 0. 0) // источник света в положении (0. 0. 0) gluLookAtC…):
// move the light and the camera // перемещаем источник света и камеру draw the object // рисуем объект
Этот код устанавливает источник света прямо в глаз (подобно шахтерской лампе), и тогда свет перемещается вместе с камерой.
8.2. Введение в модели закрашивания
8.2.9. Работа со свойствами материалов в OpenGL
Влияние источника света можно увидеть только при отражении света от поверхности объекта. В OpenGL предусмотрены возможности задания различных коэффициентов отражения, фигурирующих в равенстве (8.7). Эти коэффициенты устанавливаются с помощью различных версий функции glMaterial, причем коэффициенты можно установить отдельно для лицевых и нелицевых граней. (Вспомним обсуждение рис. 8.21.) Например, следующий код
GLfloat myDiffuse[] = {0.8. 0.2. 0.0. 1.0}: glMateria1fv(GL_FR0NT. GL_DIFFUSE, myDiffuse):
присваивает коэффициенту диффузного отражения (pdr, pdg, pdb) значение (0,8, 0,2, 0,0) для всех последовательно заданных лицевых граней. Коэффициенты отражения задаются в формате RBGA в виде четверки, аналогично заданию цвета. Первый параметр функции glMaterialfvO может принимать следующие значения: О GL_FR0NT: задается коэффициент отражения для лицевых граней.
О GLJ3ACK: задается коэффициент отражения для нелицевых граней.
О GL_FR0NT_AND_BACK: задается коэффициент отражения и для лицевых, и для нелицевых граней. Второй параметр может принимать следующие значения: О GL_AMBIENT: задаются коэффициенты фонового отражения. О GL_DIFFUSE: задаются коэффициенты диффузного отражения. О GL_SPECULAR: задаются коэффициенты зеркального отражения.