![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Для задания параметров текущего материала используются команды
void glMaterial[i f](GLenum face, GLenum pname, GLtype param)void glMaterial[i f]v(GLenum face, GLenum pname, GLtype * params) |
С их помощью можно определить рассеянный, диффузный и зеркальный цвета материала, а также степень зеркального отражения и интенсивность излучения света, если объект должен светиться. Какой именно параметр будет определяться значением param, зависит от значения pname:
GL_AMBIENT | параметр params должен содержать четыре целых или вещественных значения цветов RGBA, которые определяют рассеянный цвет материала (цвет материала в тени). Значение по умолчанию: (0.2, 0.2, 0.2, 1.0). |
GL_DIFFUSE | параметр params должен содержать четыре целых или вещественных значения цветов RGBA, которые определяют цвет диффузного отражения материала. Значение по умолчанию: (0.8, 0.8, 0.8, 1.0). |
GL_SPECULAR | параметр params должен содержать четыре целых или вещественных значения цветов RGBA, которые определяют цвет зеркального отражения материала. Значение по умолчанию: (0.0, 0.0, 0.0, 1.0). |
GL_SHININESS | параметр params должен содержать одно целое или вещественное значение в диапазоне от 0 до 128, которое определяет степень зеркального отражения материала. Значение по умолчанию: 0. |
GL_EMISSION | параметр params должен содержать четыре целых или вещественных значения цветов RGBA, которые определяют интенсивность излучаемого света материала. Значение по умолчанию: (0.0, 0.0, 0.0, 1.0). |
GL_AMBIENT_AND_DIFFUSE | эквивалентно двум вызовам команды glMaterial*() со значением pname GL_AMBIENT и GL_DIFFUSE и одинаковыми значениями params. |
Из этого следует, что вызов команды glMaterial[i f]() возможен только для установки степени зеркального отражения материала (shininess). Команда glMaterial[i f]v() используется для задания остальных параметров.
Параметр face определяет тип граней, для которых задается этот материал и может принимать значения GL_FRONT, GL_BACK или GL_FRONT_AND_BACK.
Если в сцене материалы объектов различаются лишь одним параметром, рекомендуется сначала установить нужный режим, вызвав glEnable() c параметром GL_COLOR_MATERIAL, а затем использовать команду
void glColorMaterial(GLenum face, GLenum pname) |
где параметр face имеет аналогичный смысл, а параметр pname может принимать все перечисленные значения. После этого значения выбранного с помощью pname свойства материала для конкретного объекта (или вершины) устанавливаются вызовом команды glColor*(), что позволяет избежать вызовов более ресурсоемкой команды glMaterial*() и повышает эффективность программы. Другие методы оптимизации приведены в п. 0.
Пример определения свойств материала:
float mat_dif[]={0.8,0.8,0.8};float mat_amb[] = {0.2, 0.2, 0.2};float mat_spec[] = {0.6, 0.6, 0.6};float shininess = 0.7 * 128;…glMaterialfv (GL_FRONT_AND_BACK,GL_AMBIENT, mat_amb);glMaterialfv (GL_FRONT_AND_BACK,GL_DIFFUSE, mat_dif);glMaterialfv (GL_FRONT_AND_BACK,GL_SPECULAR, mat_spec);glMaterialf (GL_FRONT,GL_SHININESS, shininess); |
Дата публикования: 2015-10-09; Прочитано: 194 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!