2011-11-14 62 views
0

OK。 我可以將網格加載到我的項目中,但我無法更改網格的顏色。 在屏幕上,網格的顏色是白色的。 我想將其更改爲紅色,但我不能。 請幫忙。SOS(Material Help)

這裏是我的代碼:

g_pApp->m_pd3dDevice->SetRenderState(D3DRS_LIGHTING, FALSE); 

g_pApp->m_pd3dDevice->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE); 
g_pApp->m_pd3dDevice->SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_DIFFUSE); 
g_pApp->m_pd3dDevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_DISABLE); 

g_pApp->m_pd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, FALSE); 
g_pApp->m_pd3dDevice->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_DISABLE); 
g_pApp->m_pd3dDevice->SetTextureStageState(1, D3DTSS_COLOROP, D3DTOP_DISABLE); 
g_pApp->m_pd3dDevice->SetTextureStageState(2, D3DTSS_COLOROP, D3DTOP_DISABLE); 

D3DMATERIAL9  mtrl; 

D3DUtil_InitMaterial(mtrl,1,1,1); 

for(int j = 0 ; j < m_meshTarget[i].dwNumMaterial ; j++){  

    if(m_meshTarget[i].pnTextureIndex[j] != -1){ 
     g_pApp->m_pd3dDevice->SetTexture(0, m_meshTarget[i].ppTexture[m_meshTarget[i].pnTextureIndex[j]]);} 
    else 
     g_pApp->m_pd3dDevice->SetTexture(0,0); 
     g_pApp->m_pd3dDevice->SetMaterial(&mtrl); 
     m_meshTarget[i].pMesh->DrawSubset(j); 
    } 

回答

0

不完全知道什麼D3DUtil_InitMaterial(),但你需要爲mtrl光屬性中設置適當的值。

float red = 1.0f, green = 0.0f, blue = 0.0f; 

mtrl.Diffuse.r = 1.0f; 
mtrl.Diffuse.g = 1.0f; 
mtrl.Diffuse.b = 1.0f; 

mtrl.Ambient.r = red; 
mtrl.Ambient.g = green; 
mtrl.Ambient.b = blue; 

mtrl.Specular.r = 0.5f; 
mtrl.Specular.g = 0.5f; 
mtrl.Specular.b = 0.5f; 

mtrl.Power = 8.0f; 

g_pApp->m_pd3dDevice->SetMaterial(&mtrl); 

漫反射,鏡面反射和功率值只是例如。

+0

謝謝你的幫助。但它根本沒有幫助我。 – bTagTiger

+0

它的顏色仍然是白色! – bTagTiger

+0

@bTagTiger看我的編輯。 –