|
|
我想让一份x文件中的多个物体区分开来 请问怎样做??我loadx的代码如下:
bool CBasicXFile: oadXFile(TCHAR* szXFileName,IDirect3DDevice9 *device)
{
if(FAILED(D3DXLoadMeshFromX(szXFileName,D3DXMESH_MANAGED,
device,&m_pAdjacencyBuffer,&m_pMaterialBuffer,0,&m_dwMaterials,
&m_pD3DXMesh)))
{MessageBox(NULL,"装入.X文件失败.","提示",0);
return false;
}
if(m_pMaterialBuffer==NULL || m_dwMaterials==0)
return false;
D3DXMATERIAL* pD3DXMaterial=(D3DXMATERIAL*)m_pMaterialBuffer- >GetBufferPointer();
if(pD3DXMaterial!=NULL)
{ m_pD3DMaterialArray=new D3DMATERIAL9[m_dwMaterials];
m_ppDirect3DTextureArray=new IDirect3DTexture9*[m_dwMaterials];
for(DWORD i=0;i<m_dwMaterials;i++)
{ m_pD3DMaterialArray=pD3DXMaterial.MatD3D;
m_pD3DMaterialArray.Ambient=m_pD3DMaterialArray.Diffuse;
m_ppDirect3DTextureArray=NULL;
if(pD3DXMaterial.pTextureFilename!=NULL)
{ if(FAILED(D3DXCreateTextureFromFile(device ,pD3DXMaterial
.pTextureFilename,&m_ppDirect3DTextureArray)))
{m_ppDirect3DTextureArray=NULL;}
}
}
}
m_pD3DXMesh->OptimizeInplace(
D3DXMESHOPT_COMPACT |
D3DXMESHOPT_ATTRSORT|
D3DXMESHOPT_VERTEXCACHE,
(DWORD*)m_pAdjacencyBuffer->GetBufferPointer(),
NULL, NULL, NULL);
m_pMaterialBuffer->Release();
m_pAdjacencyBuffer->Release();
return true;
}
渲染的代码如下:
void CBasicXFile::Render()
{
m_pIDirect3DDevice->Clear(0,NULL,D3DCLEAR_TARGET|D3DCLEAR_ZBUFFER,D3DCOLOR_XRGB(0,255,0),1.0f,0);
m_pIDirect3DDevice->BeginScene();
for(DWORD j=0;j<m_dwMaterials;j++){
m_pIDirect3DDevice->SetMaterial(&m_pD3DMaterialArray[j]);
m_pIDirect3DDevice->SetTexture(0,m_ppDirect3DTextureArray[j]);
m_pD3DXMesh->DrawSubset(j);
}
m_pIDirect3DDevice->EndScene();
m_pIDirect3DDevice->SetRenderState(D3DRS_ZENABLE,D3DZB_TRUE);
m_pIDirect3DDevice-> resent(NULL, NULL, NULL, NULL);
}
假如我加载了一个xfile,它里面包括3个图形,怎样才能让其中一个移动呢???请高手帮我改改上边的代码,感激不尽
|
|