Проблема: некорректно работает освещение, выглядит так, будто источник света перемещается параллельно с вращением объекта. По идее источник света должен быть статичным. Объект может вращается вокруг своего центра с помощью мыши (и функции 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. Вот как это выглядит: ссылка
Ответ
Оказалось что это ответ:
Похоже на глючные нормали
Комментариев нет:
Отправить комментарий