6.8. Спецификация материалов в OpenGL

В OpenGL свойства материалов соответствуют поддерживаемым параметрам источников света и модели отражения Фонга. Программист имеет возможность связывать разные материалы с внутренней и внешней сторонами одной и той же поверхности. Все параметры, обрабатываемые в модели отражения, задаются вызовом двух функций:

glMaterialfv(face, type, pointer_to_array); glMaterialf(face, type, value);
Спецификация материалов в OpenGÎ

6.8. Спецификация материалов в OpenGÎ Для определения коэффициентов отражения для фоновой, диффузной и зеркальной составляющих (ка, kj, к,) по каждому из первичных цветов в программу нужно включить определение трех массивов:

GLfloat ambient[] = {0.2, 0.2, 0.2, 1.0}; GLfloat diffuse[] = (1-0, 0.8, 0.0, 1.0}; GLfloat specular[)= {1.0, 1.0, 1.0, 1.0};

Первый массив задает небольшое значение коэффициента отражения фоновой составляющей, причем коэффициент одинаков для всех первичных цветов, что эквивалентно отражению белого света. Для диффузной составляющей набор коэффициентов по отдельным цветам задает в результате отражение желтого цвета, а для зеркальной составляющей коэффициенты по всем первичным цветам опять одинаковы. Если внутренние и внешние стороны поверхностей имеют одинаковые параметры материала, то при вызове функции glMaterialfv( ) ей в качестве аргумента face передается константа GL_FRONT_AND_BACK:

glMaterialfV(GL_FRONT_AND_BACK, GL_AMBIENT, ambient); glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, diffuse); glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, specular);

Учтите, что если параметры для зеркальной и диффузной составляющих одинаковы, то можно задавать их одним вызовом функции glMaterialf v( ), передав ей в качестве параметра type константу GL_DIFFUSE_AND_SPECULAR. При индивидуальном определении параметров материала для внешней и внутренней сторон в качестве аргумента face используются соответственно константы GL_FRONT и GL_BACK. Коэффициент резкости бликов - показатель степени в члене зеркального отражения модели Фонга - задается вызовом функции glMaterialfv( ), которой в качестве параметра type передается константа GL_SHININESS:


⇐ Предыдущая| |Следующая ⇒