C# + OpenGL - работа с материалами

Блоговая публикация пользователя: amid Эта публикация была перенесена из личного блога пользователя в общие разделы уровок сайта.

Основы работы с освещением в OpenGL

В графическом программирование материалы занимают достаточно важную роль. Материал может рассеивать, отражать и излучать свет.

Свойства материала можно изменять при помощи специальной функции:

Код:
/*http://esate.ru, amid*/

Gl.glMaterialfv // грань, свойство, значение 

Первый параметр определяет грань, для которой устанавливаются свойства. Он может принимать одно из следующих значений:

Код:
/*http://esate.ru, amid*/

Gl.GL_BACK // задняя грань
Gl.GL_FONT // передняя грань
Gl.GL_FRONT_AND_BACK // обе грани

Второй параметр определяет свойство материала, которое будет установлено, и может принимать следующие значения:

Код:
/*http://esate.ru, amid*/

Gl.GL_AMBIENT // фоновый свет
Gl.GL_DIFFUSE // диффузионный свет
Gl.GL_SPECULAR // отраженный свет
Gl.GL_EMISSION // излучаемый свет
Gl.GL_SHININESS // степень отраженного света
Gl.GL_AMBIENT_AND_DIFFUSE // оба рассеянных света


Чтобы создать эффект металлической поверхности, нужно увеличить параметр Gl.GL_SHININESS.

Третий параметр определяет цвет в виде массива. В случае Gl.GL_SHININESS указывает на число типа float, которое должно быть в диапазоне от 0 до 128.

Изобразим чайник красного цвета, отражающий свет:

Код:
/*http://esate.ru, amid*/

void Draw()
{
  Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);
  Gl.glLoadIdentity();
   // описываем свойства материала
  float[] color = new float[4]{ 1, 0, 0, 1}; // красный цвет
  float[] shininess = new float[1]{ 30 };
  Gl.glMaterialfv(Gl.GL_FRONT, Gl.GL_DIFFUSE, color); // цвет чайника
  Gl.glMaterialfv(Gl.GL_FRONT, Gl.GL_SPECULAR, color); // отраженный свет
  Gl.glMaterialfv(Gl.GL_FRONT, Gl.GL_SHININESS, shininess); // степень отраженного света
  //----------------------------
  Gl.glPushMatrix();
  Gl.glTranslated(0,0,-6);
  Gl.glRotated(45, 1, 1, 0);
   // рисуем чайник с помощью библиотеки FreeGLUT 
  Glut.glutSolidTeapot(1);
  Gl.glPopMatrix();
  Gl.glFlush();
  AnT.Invalidate();
}


Наш чайник готов.

Уроки OpenGL различных тематик: Чайник с заданными параметрами и свойствами Рисунок 1. Чайник с заданными параметрами и свойствами.

Нет доступа к просмотру комментариев.

^