Освещение почему-то без теней, DirectX9

199
16 декабря 2017, 07:13

Загрузил модель, пытаюсь осветить. Создаю источник света над моделью:

 // включаем свет в сцене
Device->SetRenderState(D3DRS_LIGHTING, true);
// создаём материал и устанавливаем материал
D3DMATERIAL9 materialAll;
materialAll.Ambient = D3DXCOLOR(255, 0, 0, 1);
materialAll.Diffuse = D3DXCOLOR(255, 0, 0, 1);
materialAll.Specular = D3DXCOLOR(255, 0, 0, 1);
materialAll.Emissive = D3DXCOLOR(0, 0, 0, 1);
materialAll.Power = 5.f;
Device->SetMaterial(&materialAll);
// создаем, помещаем в систему и включаем источник света
D3DLIGHT9 point;
ZeroMemory(&point, sizeof(point));
point.Type = D3DLIGHT_POINT;
point.Diffuse = D3DXCOLOR(255, 255, 255, 1);
point.Specular = D3DXCOLOR(255, 255, 255, 1) * 0.6f;
point.Ambient = D3DXCOLOR(255, 255, 255, 1) * 0.6f;
point.Position = D3DXVECTOR3(0.f, 30.f, 0.f);
point.Range = 1000.0f;
point.Attenuation0 = 1;
point.Attenuation1 = 0;
point.Attenuation2 = 0;
Device->SetLight(0, &point);
Device->LightEnable(0, true);
// устанавливаем режим автонормализации векторов и режим отображения бликов
Device->SetRenderState(D3DRS_NORMALIZENORMALS, true);
Device->SetRenderState(D3DRS_SPECULARENABLE, true);

Однако почему-то не производится затенение — вся модель равномерно насыщенная по всей площади.

Попробовал заменить освещение на насыщенно-синее — модель стала чёрной, то есть источник света применяется.

READ ALSO
Защита от ввода буквенных символов с++

Защита от ввода буквенных символов с++

Проблема в том, что после ввода правильного значения (цифры), не предлагается вводить другое значение - size2Как исправить?

295
Совершенная раскраска графа

Совершенная раскраска графа

Здравствуйте, мне необходимо сделать совершенную раскраску графа"Раскраска вершин графа G называется совершенной, если для любых двух вершин...

187
Двусвязный список

Двусвязный список

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

217
Выписать цифры числа в обратном порядке с помощью цикла while [требует правки]

Выписать цифры числа в обратном порядке с помощью цикла while [требует правки]

Определить число выписыванием в обратном порядке цифр заданного натуральным числом nРезультат вывести на экран

186