SOS (Материальная помощь) - PullRequest
0 голосов
/ 14 ноября 2011

OK.Я могу загрузить сетку в свой проект, но я не могу изменить цвет сетки.На экране цвет сетки белый.Я хочу изменить его на красный, но не могу.Пожалуйста, помогите.

Вот мой код:

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);
    }

1 Ответ

0 голосов
/ 14 ноября 2011

Не совсем уверен, что делает 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 приведены только для примера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...