2015-06-10 7 views
0

Ну, вопрос говорит об этом. Когда у меня отключен свет (pd3dDevice->SetRenderState(D3DRS_LIGHTING, TRUE);), я получаю цвета, как ожидалось, когда я устанавливаю его в true, я получаю чистый черный цвет, даже если я устанавливаю окружающий свет, но это исправлено при установке материала. Но цвета вершин игнорируются полностью, и я получаю только цвет окружающего света.Вершины DirectX 9 при включении освещения?

Поиск до сих пор: Единственная полезная статья, я заметил это vertex lighting tutorial, но удаляет диффузный цвет из вершин, и вместо этого добавляет нормальный вектор. Также на MSDN, относительно диффузного освещения, он не ссылается на цвет вершины. Я начинаю подозревать, что цвет вершины, как и значение RHW, обычно вычисляется во время выполнения, а установка во время объявления просто дает цвет без необходимости освещения. Это оно?

освещение-код, связанный с:

pd3dDevice->SetRenderState(D3DRS_LIGHTING, TRUE); 
pd3dDevice->SetRenderState(D3DRS_COLORVERTEX, TRUE); // not sure if needed 
pd3dDevice->SetRenderState(D3DRS_AMBIENT, D3DCOLOR_ARGB(22, 255, 255, 255)); // no visible difference on A 
pd3dDevice->SetRenderState(D3DRS_SHADEMODE, D3DSHADE_GOURAUD); // probably not needed yet, can't harm 

D3DMATERIAL9 material; 

D3DCOLORVALUE zeroColor; 
D3DCOLORVALUE oneColor; 

zeroColor.a = 0; 
zeroColor.r = 0; 
zeroColor.g = 0; 
zeroColor.b = 0; 

oneColor.a = 0; // no perceivable difference between 0 and 1 
oneColor.r = 1; 
oneColor.g = 1; 
oneColor.b = 1; 

material.Ambient = oneColor; 
material.Diffuse = zeroColor; //setting it to oneColor has no effect 
material.Emissive = zeroColor; 
material.Power = 0; //no difference if 0 or 1 
material.Specular = zeroColor; 
pd3dDevice->SetMaterial(&material); 

ответ

1

Если вы хотите использовать цвета вершин в качестве входных данных для расчета освещения, необходимо установить состояние рендеринга D3DRS_AMBIENTMATERIALSOURCE в D3DMCS_COLOR1 (для диффузного цвета вершины). То же самое относится к другим компонентам цвета.

 Смежные вопросы

  • Нет связанных вопросов^_^