Внимание!

Эта публикация перенесена в раздел уроков по адресу C# + OpenGL - работа с материалами.
К ней прикреплена новая отдельная ветка комментариев форума, которую вы можетет найти после текста публикации.
Обсуждение публикации рекуомендуется вести по новому адресу, который указан выше.

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

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

В этом уроке вы можете узнать основы работы с освещением в OpenGL.

[spoiler]



Свойства материала можно изменять при помощи специальной функции:
/*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 оба рассеянных света
Чтобы создать эффе
/*http://esate.ru, amid*/

[/code]кт металической поверхности, нужно увелчить параметр [B]Gl.GL_SHININESS[/B].

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

Давайте, изобразим чайник красного цвета, отражающий свет:
[code]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();
}


На этом всё, до следующих уроков!
0      1661        26.08.2010        8

Внимание!

Эта публикация перенесена в раздел уроков по адресу C# + OpenGL - работа с материалами.
К ней прикреплена новая отдельная ветка комментариев форума, которую вы можетет найти после текста публикации.
Обсуждение публикации рекуомендуется вести по новому адресу, который указан выше.

0 
27.08.2010 00:00:00
Убрал картинку под кат, надеюсь никто не против :)
0 
27.08.2010 00:00:00
Gl.GL_AMBIENT рассеянный свет
Gl.GL_DIFFUSE тоже рассеянный
вобще то не правильно
Amdient это фоновый цвет а не рассейный
0 
28.08.2010 00:00:00
Gl.GL_AMBIENT фоновый свет
Gl.GL_DIFFUSE диффузионый свет
Вот так лучше?
0 
28.08.2010 00:00:00
да, так правильно
0 
29.08.2010 00:00:00
Перенес с «Новые уроки OpenGL», но рейтинга у тебя было достаточно, чтобы сделать это самостоятельно :)
0 
29.08.2010 00:00:00
Еще, просьба ко всем, кто создает новые уроки, ознакомиться . Это поможет не упустить несколько важных вещей для создания качественных, полных уроков.
0 
27.12.2011 00:00:00
Только седня начал почту разгребать, а там че токо нету от Nvidia, AMD, Microsoft… И в дебрях этой скуки, большая «открытка» из будущего=)))
Очень захотелось поделиться интересной новостью))
В преть буду делиться всеми вкусностями)
0 
27.12.2011 00:00:00
^
Регистрация
Регистрируясь, вы принимаете правила сайта. Если вы не получили код подтв. регистрации - не забудьте проверить папку спам.
Логин*
Email*
Пароль*
Подтверждение пароля*
 
Логин*
Код*
 
×
Восстановление пароля
Пожалуйста, заполните поля, после чего вы получите код подтверждения на ваш Email. Если код не пришел в течении нескольких минут - проверьте папку спам.
Логин

или Email
Логин*
Код подтверждения*
Новый пароль*
Подтверждение пароля*
×
Авторизация
  • Используйте вашу учетную запись на Facebook.com для входа на сайт.
  • Используйте вашу учетную запись VKontakte для входа на сайт.
  • Используйте вашу учетную запись Google для входа на сайт.
Авторизуйтесь с помощью соц. сети или с помощью аккаунта на сайте:
×