2011-11-14 2 views
0

확인. 메쉬를 내 프로젝트에로드 할 수는 있지만 메시의 색을 변경할 수는 없습니다. 화면에서 메쉬의 색이 흰색입니다. 빨간색으로 변경하고 싶지만 변경할 수 없습니다. 도와주세요.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); 

diffuse, specular 및 power 값은 단지 예입니다.

+0

도움 주셔서 감사합니다. 그러나 그것은 전혀 도움이되지 않습니다. – bTagTiger

+0

색깔은 여전히 ​​흰색입니다! – bTagTiger

+0

@bTagTiger 내 편집을 참조하십시오. –