Название: Компьютерная графика(Е.Н. Павенко)

Жанр: Информатика

Просмотров: 1428


3. пример программы, использующей

источник света и свойства материала

#include <GL/glut.h>

#include <stdlib.h>

/*  Initialize material property, light source, lighting model,

 *  and depth buffer.

 */

void init(void)

{

   GLfloat mat_specular[] = { 1.0, 1.0, 1.0, 1.0 };

   GLfloat mat_shininess[] = { 50.0 };

   GLfloat light_position[] = { 1.0, 1.0, 1.0, 0.0 };

   glClearColor (0.0, 0.0, 0.0, 0.0);

   glShadeModel (GL_SMOOTH);

   glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular);

   glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess);

   glLightfv(GL_LIGHT0, GL_POSITION, light_position);

   glEnable(GL_LIGHTING);

   glEnable(GL_LIGHT0);

   glEnable(GL_DEPTH_TEST);

   glEnable(GL_COLOR_MATERIAL);

}

void display(void)

{

   glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

   glColor3f(1.0,0.0,0.0);

   glutSolidSphere (1.0, 20, 16);

   glFlush ();

}

void reshape (int w, int h)

{

   glViewport (0, 0, (GLsizei) w, (GLsizei) h);

   glMatrixMode (GL_PROJECTION);

   glLoadIdentity();

   if (w <= h)

      glOrtho (-1.5, 1.5, -1.5*(GLfloat)h/(GLfloat)w,

         1.5*(GLfloat)h/(GLfloat)w, -10.0, 10.0);

   else

      glOrtho (-1.5*(GLfloat)w/(GLfloat)h,

         1.5*(GLfloat)w/(GLfloat)h, -1.5, 1.5, -10.0, 10.0);

   glMatrixMode(GL_MODELVIEW);

   glLoadIdentity();

}

void keyboard(unsigned char key, int x, int y)

{

   switch (key) {

      case 27:

         exit(0);

         break;

   }

}

int main(int argc, char** argv)

{

   glutInit(&argc, argv);

   glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH);

   glutInitWindowSize (500, 500);

   glutInitWindowPosition (100, 100);

   glutCreateWindow (argv[0]);

   init ();

   glutDisplayFunc(display);

   glutReshapeFunc(reshape);

   glutKeyboardFunc(keyboard);

   glutMainLoop();

   return 0;

}

4. Задание на лабораторную работу

Отладить программу, приведенную в п.3.

Отключить все источники света, кроме глобального фонового освещения.

Добавить точечный источник света.

Превратить точечный источник света в прожектор.

5. Изменить свойства материала в соответствии с вариантом, заданным преподавателем

Контрольные вопросы

Цветовые модели, используемые в компьютерной графике. RGB – модель.

Методы закрашивания граней объекта Метод Гуро. Метод Фонга.

Способы задания свойств источников света в OpenGL.

Способы задания свойств материала в OpenGL.