DirectX9, освещение текстурированной модели

202
23 декабря 2017, 05:53

Все делаю по технологии: создаю буфер вершин, задаю координаты вершин, координаты текстуры, нормали. Без освещения модель отрисовывается идеально. А вот с освещением начинаются проблемы...На скриншоте видно, что происходит с моделью, которая попадает под освещение. Источник освещения находится справа сверху. Код материала и света:

    // Создаём материал и устанавливаем его в устройство
    D3DMATERIAL9 mat;
    ZeroMemory(&mat, sizeof(mat));
    mat.Ambient = D3DXCOLOR(D3DCOLOR_XRGB(64, 64, 64));
    mat.Diffuse = D3DXCOLOR(D3DCOLOR_XRGB(64, 64, 64));
    mat.Emissive = D3DXCOLOR(D3DCOLOR_XRGB(0, 0, 0));
    mat.Specular = D3DXCOLOR(D3DCOLOR_XRGB(64, 64, 64));
    mat.Power = 5.f;
    Device->SetMaterial(&mat);
    // Создаём источник света и устанавливаем его в системе
    D3DLIGHT9 point;
    ZeroMemory(&point, sizeof(point));
    point.Type = D3DLIGHT_POINT;
    point.Position = D3DXVECTOR3(30,15,-10);
    point.Ambient = D3DXCOLOR(D3DCOLOR_XRGB(255,255, 255)) * 0.6f;
    point.Diffuse = D3DXCOLOR(D3DCOLOR_XRGB(255, 255, 255));
    point.Specular = D3DXCOLOR(D3DCOLOR_XRGB(255, 255, 255)) * 0.3f;
    point.Range = 1000.f;
    //point.Attenuation0 = 1.f;
    Device->SetLight(0, &point);
    Device->LightEnable(0, true);
    Device->SetRenderState(D3DRS_NORMALIZENORMALS, true);
    Device->SetRenderState(D3DRS_SPECULARENABLE, true);
    Device->SetRenderState(D3DRS_LIGHTING, true);

В чем моё непонимание? Спасибо. P.S.: на самом деле, я не понимаю, как здесь участвует материал, но без материала освещение невозможно. Так как же правильно задать материал?

READ ALSO
Поиск по содержимому файлов (С/C++ Linux)

Поиск по содержимому файлов (С/C++ Linux)

Задание следующее - В указанной директории найти обычные файлы, которые содержат одинаковые (по информации) строкиВывести: имя файла, права...

239
CMake не может найти заголовочный файл

CMake не может найти заголовочный файл

Используем для проекта GMPПри сборке проекта CMake выкидывает мне следующее:

213
сдвиг элементов массива

сдвиг элементов массива

Задача следующая: есть пиктограммы отображающие определенный процесс на экране (5 пиктограмм):

173
как обратиться к самомму итератору vector'a?

как обратиться к самомму итератору vector'a?

Нужно выяснить какое значение итератора четное, а какое нечетное

204