Страницы

Поиск по вопросам

среда, 5 июня 2019 г.

OpenGL Освещение

Проблема: некорректно работает освещение, выглядит так, будто источник света перемещается параллельно с вращением объекта. По идее источник света должен быть статичным. Объект может вращается вокруг своего центра с помощью мыши (и функции glRotated()). Код:
//Инициализация света, находится в методе initializeGL() //Часть параметров такие же как и стандартные GLfloat LightAmbient[]= { 0.5f, 0.5f, 0.5f, 1.0f }; GLfloat LightDiffuse[]= { 1.0f, 1.0f, 1.0f, 1.0f }; GLfloat LightSpecular[]= { 1.0f, 1.0f, 1.0f, 1.0f }; GLfloat LightPosition[]= { 10.0f, 10.0f, 10.0f, 1.0f }; glMatrixMode(GL_MODELVIEW); glLoadIdentity(); //Я предположил, что загрузка единичной матрицы мне поможет, но нет glLightfv(GL_LIGHT1, GL_POSITION, LightPosition); glLightfv(GL_LIGHT1, GL_AMBIENT, LightAmbient); glLightfv(GL_LIGHT1, GL_DIFFUSE, LightDiffuse); glLightfv(GL_LIGHT1, GL_SPECULAR, LightSpecular); glEnable(GL_LIGHT1); //Источник света один
//Отрисовка фигуры void Canvas::drawAll() //Отрисовка всех фигур { names = 0; for(int i = 0; i < figures; i++) { glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glTranslated(motionX, motionY, zoom); //motionX/Y вычисляются при перемещении курсора при нажатой ПКМ glRotated(rotationX, 1.0, 0.0, 0.0); //rotationX/Y также, только при ЛКМ glRotated(rotationY, 0.0, 1.0, 0.0); if(allFigures[i]->visible)draw(allFigures[i]); } }
Пишу на Qt5.3. Вот как это выглядит: ссылка


Ответ

Оказалось что это ответ:
Похоже на глючные нормали

Комментариев нет:

Отправить комментарий