|
|
小弟初学direct3D,试着导入X模型文件时出了问题。模型是我从一个游戏里提取出来的,用directx viewer查看时一切正常,可是我自己导入的时候渲染出来的各个网面却不如原来在directx viewer里看到的细致(原来的网面上还有点条纹图案,而我的只是单色),而且有些模型渲染之后还丢失了一些网面,出现一块黑色。
我是按sdk里面那个教程来加载的,问题出在哪里呢?
我的代码:
加载:
void model::loadX(int iddf,char *path,LPDIRECT3DDEVICE9 *g_D3DDevice)
{
idf=iddf;
g_D3DD=g_D3DDevice;
if(FAILED(D3DXLoadMeshFromX(path, D3DXMESH_SYSTEMMEM,
*g_D3DDevice, NULL, &g_matBuffer, NULL,
&g_numMaterials, &g_model))) return;
g_matList = new D3DMATERIAL9[g_numMaterials];
g_textureList = new LPDIRECT3DTEXTURE9[g_numMaterials];
D3DXMATERIAL* mat = (D3DXMATERIAL*)g_matBuffer->GetBufferPointer();
for(DWORD i = 0; i <g_numMaterials; i++)
{
g_matList = mat.MatD3D;
//g_matList.Ambient=g_matList.Diffuse;
if(FAILED(D3DXCreateTextureFromFile(*g_D3DDevice,
mat.pTextureFilename,
&g_textureList))) g_textureList = NULL;
}
}
渲染:
void model::show()
{
for(DWORD i = 0; i < g_numMaterials; i++)
{
(*g_D3DD)->SetMaterial(&g_matList);
(*g_D3DD)->SetTexture(0, g_textureList);
g_model->DrawSubset(i);
}
} |
|