Войти
ПрограммированиеFAQ

Проблемы с освещением после масштабирования объекта.

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

В DirectX сделать это можно так:

pDevice->SetRenderState( D3DRS_NORMALIZENORMALS, TRUE );

В OpenGL так:

glEnable(GL_NORMALIZE);

В OpenGL 1.2 введено расширение GL_EXT_rescale_normal, которое делит нормаль на соответствующие элементы матрицы modelview, и получает правильное значение вектора нормали.

15 августа 2007 (Обновление: 5 авг 2008)