Проблемы с освещением после масштабирования объекта.
Преобразование вершины, содержащее масштабирование, изменяет не только координаты в пространстве, но и нормаль, что недопустимо, так как вектор нормали должен иметь длину равную еденице.
После такого действия нужно нормализовать нормали.
В DirectX сделать это можно так:
pDevice->SetRenderState( D3DRS_NORMALIZENORMALS, TRUE );
В OpenGL так:
glEnable(GL_NORMALIZE);
В OpenGL 1.2 введено расширение GL_EXT_rescale_normal, которое делит нормаль на соответствующие элементы матрицы modelview, и получает правильное значение вектора нормали.
15 августа 2007 (Обновление: 5 авг 2008)