В графическом программирование материалы занимают достаточно важную роль. Материал может рассеивать, отражать и излучать свет.
В этом уроке вы можете узнать основы работы с освещением в OpenGL.
Свойства материала можно изменять при помощи специальной функции:
Gl.glMaterialfv(грань, свойство, значение);
Первый параметр определяет грань, для которой устанавливаются свойства. Он может принимать одно из следующих значений:
Gl.GL_BACK задняя грань
Gl.GL_FONT передняя грань
Gl.GL_FRONT_AND_BACK обе грани
Второй параметр определяет свойство материала, которое будет установлено, и может принимать следующие значения:
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.
Давайте, изобразим чайник красного цвета, отражающий свет:
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();
}
На этом всё, до следующих уроков!
Комментарии (6)
rss свернуть / развернутьсвернуть ветку
вобще то не правильно
Amdient это фоновый цвет а не рассейный
свернуть ветку
Gl.GL_DIFFUSE диффузионый свет
Вот так лучше?
свернуть ветку
свернуть ветку
свернуть ветку
свернуть ветку