Esate.ru

Уроки OpenGL различных тематик

В этом разделе сосредоточены уроки, которые не были объединены в курсы. Большая часть уроков перенесена из авторских публикаций пользователей.

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

Основы работы с освещением в 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. Чайник с заданными параметрами и свойствами.

Источник: Esate.ru
26 Января 2010


Комментарии (из ветки форума)

Авторизируйтесь или Зарегистрируйтесь
чтобы оставлять комментарии.

OpenGL

OpenGL

OpenGL (Open Graphics Library — открытая графическая библиотека, графический API) — спецификация, определяющая независимый от языка программирования платформонезависимый программный интерфейс для написания приложений, использующих двумерную и трёхмерную компьютерную графику.

Регистрация

Регистрируясь, вы принимаете правила сайта. Если вы не получили код подтв. регистрации - не забудьте проверить папку спам.
Логин*
Email*
Пароль*
Подтверждение пароля*
 
Логин*
Код*
 

Восстановление пароля

Пожалуйста, заполните поля, после чего вы получите код подтверждения на ваш E-mail. Если код не пришел в течении нескольких минут - проверьте папку спам.
Логин

или Email
 
Логин*
Код подтверждения*
Новый пароль*
Подтверждение пароля*
 

Авторизация

Пожалуйста, авторизуйтесь, для входа на сайт с помощью соц. сети:
  • Используйте вашу учетную запись на Facebook.com для входа на сайт.
  • Используйте вашу учетную запись VKontakte для входа на сайт.
  • Используйте вашу учетную запись Google для входа на сайт.

или с помощью аккаунта на сайте:

Логин
Пароль