Почему мой цвет пропадает, когда я включаю освещение в OpenGL?

Я разрабатываю графическое приложение на C++ с использованием OpenGL API и GLUT.

Чтобы добавить освещение, я сделал следующие изменения в моей матрице modelview:

glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);

// Create light components.
GLfloat ambientLight[] = { 0.2f, 0.2f, 0.2f, 1.0f };
GLfloat diffuseLight[] = { 0.8f, 0.8f, 0.8, 1.0f };
GLfloat specularLight[] = { 0.5f, 0.5f, 0.5f, 1.0f };
GLfloat position[] = { 0.0f, 0.0f, 0.0f, 1.0f };

// Assign created components to GL_LIGHT0.
glLightfv(GL_LIGHT0, GL_AMBIENT, ambientLight);
glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuseLight);
glLightfv(GL_LIGHT0, GL_SPECULAR, specularLight);
glLightfv(GL_LIGHT0, GL_POSITION, position);

Освещение в основном работает, я верю, но цвета моих объектов пропадают. Все, что я вижу - это черно-белый силуэт моей общей фигуры.

Мне интересно, почему так происходит?

26
задан genpfault 13 December 2011 в 19:42
поделиться