Почему GL_SPECULAR не работает? - PullRequest
1 голос
/ 18 мая 2011

Я скачал код из учебника NeHe, посвященного освещению.Оригинальный код не включал зеркальный свет, я просто добавил его.Я определил свободные массивы цветного освещения и отключил другие источники света.

GLfloat LightBlack[] = { 0.0f, 0.0f, 0.0f, 1.0f };
GLfloat LightGreen[] = { 0.0f, 1.0f, 0.0f, 1.0f };

...

glLightfv(GL_LIGHT1, GL_AMBIENT, LightBlack);       // add lighting. (ambient)
glLightfv(GL_LIGHT1, GL_SPECULAR, LightGreen);      // THIS IS WHAT I ADDED
glLightfv(GL_LIGHT1, GL_DIFFUSE, LightBlack);       // add lighting. (diffuse).
glLightfv(GL_LIGHT1, GL_POSITION, LightPosition);   // set light position.

...

glutSolidTeapot(0.8f);

Однако в результате оказалось, что все источники света отключены, источников света нет вообще.Кажется, что GL_SPECULAR не работает.Почему это так?

С glDisable (GL_LIGHTING);With glDisable(GL_LIGHTING);

С glDisable (GL_LIGHTING);With glEnable(GL_LIGHTING);

1 Ответ

4 голосов
/ 18 мая 2011

Вам также необходимо настроить зеркальные свойства материала (который умножается на зеркальное отражение света) и блеск (который регулирует спад горячей точки). По умолчанию это нули. попробуйте это:

GLfloat white[] = { 1.0f, 1.0f, 1.0f, 1.0f };

glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, white);
glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, 80.0f);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...