Внимание!

Эта публикация перенесена в раздел уроков по адресу 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       1752        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
^