Шаг 17 - Вращаем направленный источник света вокруг треугольника

Из конструктора главного окна вытащите:

D3DXVECTOR3 vecDir;

И перенесите его в класс рамки окна:

class CMainWnd : public CFrameWnd
{
.
.
.
public:
	D3DXVECTOR3 vecDir; // вектор направленного источника света
.
.
.

Перейдем в функцию Transform3D и остановим вращение сцены установив ее под некоторым углом, чтобы удобней нам было видно:

D3DXMatrixRotationY (&matWorld, 1.0);

Можете скомпилировать и посмотреть, что у нас получилось. Добавляем в Transform3D():

static float y=0; y+=(float)0.01;

vecDir = D3DXVECTOR3 (sinf(y)*1, -cosf(y)*1, cosf(y)*1);
D3DXVec3Normalize ((D3DXVECTOR3*)&light.Direction, &vecDir);
p_d3d_Device->SetLight (0, &light);

Все :) свет летает вокруг нашего объекта. Все эти функции вам уже знакомы. Теперь, вспомните, у нас есть одна функция, которая вам скорее всего непонятна:

p_d3d_Device->SetRenderState (D3DRS_AMBIENT, 0);

Установите вместо 0, скажем, 100 или больше и посмотрите что будет :) Ниже показан один из кадров анимации:

17_1.gif (1160 b)


Загрузить проект | Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Хавов Евгений Валерьевич - 1.09.2002