ФлеймФорумПрограммирование

Затенение в зелёный цвет.(Direct3D)

#0
12:15, 14 июля 2011

Недавно стал замечать странный глюк в своих программах: При использовании света затенение идёт не в чёрный цвет, а в зелёный, причём если сделать цвет света чёрным, всё станет зелёным, но контуры объектов останутся видимыми вот код настройки материалов и света:

D3DMATERIAL9 Mat;

Mat.Diffuse.a = 1.0f;
Mat.Diffuse.r = 1.0f;
Mat.Diffuse.g = 1.0f;
Mat.Diffuse.b = 1.0f;

Mat.Ambient.r = 1.0f;
Mat.Ambient.g = 1.0f;
Mat.Ambient.b = 1.0f;

Mat.Specular.r = 1.0f;
Mat.Specular.g = 1.0f;
Mat.Specular.b = 1.0f;

D3DLIGHT9 Light;

Light.Type = D3DLIGHT_DIRECTIONAL;
Light.Diffuse = D3DXCOLOR(0.5f, 0.5f, 0.5f, 1.0f);
Light.Ambient = D3DXCOLOR(0.5f, 0.5f, 0.5f, 1.0f);
Light.Specular = D3DXCOLOR(0.5f, 0.5f, 0.5f, 1.0f);
Light.Direction = D3DXVECTOR3(0.0f, -1.0f, 0.0f);
Light.Range = 50.0f;
Light.Falloff = 1.0f;
Light.Attenuation0 = 0.001f;
Light.Attenuation1 = 0.001f;
Light.Attenuation2 = 0.001f;

И вот что из этого получается
Глюк со светом | Затенение в зелёный цвет.(Direct3D)
а вот без света
Без света | Затенение в зелёный цвет.(Direct3D)
в чём проблема?

P.S. Создал тему во флейме потому-что считаю вопрос очень глупым.

#1
14:36, 14 июля 2011

Поиграйся с Ambient

m_pDev->SetRenderState(D3DRS_AMBIENT,0);

#2
15:05, 14 июля 2011

Che@ter
> m_pDev->SetRenderState(D3DRS_AMBIENT,0);
И зачем мне эта функция? вот если бы можно было вот так сделать тогда другое дело: m_pDev->SetRenderState(D3DRS_AMBIENT, D3DXCOLOR(0, -0.5f, 0, 1));

#3
17:19, 14 июля 2011

Всё решил проблему кстати совершенно случайно: открыл старую программу со светом где у моделей материалы грузились из X файла и там всё работало, поменял всё так-же как и там было теперь всё работает.

ФлеймФорумПрограммирование

Тема в архиве.