Почему мой материал задней сетки закрывает переднюю часть в D3D9

образ

образ

образ

образ

Как и на изображениях выше, я создал два прямоугольника с помощью D3DXCreateMeshFVF, но материал задней части (желтый) покрывает переднюю часть (красный). какова причина??

некоторый код:

Набор материалов:

void SetMeshMaterial(D3DMATERIAL9 & mt, UINT r, UINT g, UINT b, UINT a)
{
    ZeroMemory(&mt, sizeof(D3DMATERIAL9));
    mt.Diffuse = D3DXCOLOR(r / 255.0f, g / 255.0f, b / 255.0f, a / 255.0f);
    mt.Ambient = D3DXCOLOR(r / 255.0f, g / 255.0f, b / 255.0f, a / 255.0f);
    mt.Specular = D3DXCOLOR(r / 255.0f, g / 255.0f, b / 255.0f, a / 255.0f);
    mt.Emissive = D3DXCOLOR(0.0f, 0.0f, 0.0f, 1.0f);
    mt.Power = 5.0f;
}

Свет:

D3DLIGHT9 light;
::ZeroMemory(&light, sizeof(light));
D3DXVECTOR3 direction(1.0, 0.0, 0.0);
D3DXCOLOR d3dcolor = D3DCOLOR_XRGB(255, 255, 255);
light.Type = D3DLIGHT_DIRECTIONAL;
light.Direction = direction;
light.Ambient = d3dcolor;
light.Diffuse = d3dcolor;
light.Specular = d3dcolor;

m_pDevice->SetLight(0, &light);
m_pDevice->LightEnable(0, true);

Рендер:

m_pDevice->Clear(0, NULL, D3DCLEAR_TARGET|D3DCLEAR_ZBUFFER, 0x00000000, 1.0f, 0);
m_pDevice->BeginScene();
//////////////////////////////
m_pDevice->SetMaterial(&mt1);
pMesh1->DrawSubSet(0);

m_pDevice->SetMaterial(&mt2);
pMesh2->DrawSubSet(0);

m_pDevice->EndScene();
m_pDevice->Present(NULL, NULL, NULL, NULL);

0 ответов

Другие вопросы по тегам