关于骨骼动画的网格容器疑惑
如代码中所示,为什么在加载纹理成功后要将返回的纹理接口指针给放弃掉?
//提取纹理文件, 创建纹理对象
for (iMaterial = 0; iMaterial < NumMaterials; iMaterial++)
{
if (pMeshContainer->pMaterials[iMaterial].pTextureFilename != NULL)
{
WCHAR strTexturePath[MAX_PATH];
WCHAR wszBuf[MAX_PATH];
//从纹理文件路径提取纹理文件名
RemovePathFromFileName(pMeshContainer->pMaterials[iMaterial].pTextureFilename, wszBuf);
//根据纹理文件名从事先指定的路径查找纹理文件
DXUTFindDXSDKMediaFileCch( strTexturePath, MAX_PATH, wszBuf );
if( FAILED( D3DXCreateTextureFromFile( pd3dDevice, strTexturePath,
&pMeshContainer->ppTextures[iMaterial] ) ) )
//此处之所以要将ppTexture指向的纹理数组指针放弃掉?
pMeshContainer->ppTextures[iMaterial] = NULL;
//同样此处为什么要放弃?!!
pMeshContainer->pMaterials[iMaterial].pTextureFilename = NULL;
}
}
*ppNewMeshContainer = pMeshContainer;
请问这时候ppTextures[iMaterial]肯定已经是NULL了,那么为什么还能成功的由它来设置纹理呢?
for (iMaterial = 0; iMaterial < pMeshContainer->NumMaterials; iMaterial++)
{
m_pd3dDevice->SetMaterial( &pMeshContainer->pMaterials[iMaterial].MatD3D );
m_pd3dDevice->SetTexture( 0, pMeshContainer->ppTextures[iMaterial] );
pMeshContainer->MeshData.pMesh->DrawSubset(iMaterial);
}
pMeshContainer->pMaterials[iMaterial].pTextureFilename = NULL;
这个是放掉纹理字符串, 因为纹理处理以后,这个字符串就没作用了。自然要放掉。