关于骨架动画的网格容器疑惑
关于骨骼动画的网格容器疑惑
该函数将已经放弃掉的网格容器给返回,并在LoadFromXFile函数中隐式的由D3D调用,最后在DrawContainer代码中进行如下绘制:
求高人指点,拜谢!!!
------解决方案--------------------
if( FAILED( D3DXCreateTextureFromFile( pd3dDevice, strTexturePath, &pMeshContainer->ppTextures[iMaterial] ) ) ) //此处之所以要将ppTexture指向的纹理数组指针放弃掉? pMeshContainer->ppTextures[iMaterial] = NULL;
注意看这一段,当纹理加载失败时,才会让它=NULL, 如果加载成功,则不会执行这个的。
另外。
//同样此处为什么要放弃?!!
如代码中所示,为什么在加载纹理成功后要将返回的纹理接口指针给放弃掉?
//提取纹理文件, 创建纹理对象
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;
该函数将已经放弃掉的网格容器给返回,并在LoadFromXFile函数中隐式的由D3D调用,最后在DrawContainer代码中进行如下绘制:
请问这时候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);
}
求高人指点,拜谢!!!
------解决方案--------------------
if( FAILED( D3DXCreateTextureFromFile( pd3dDevice, strTexturePath, &pMeshContainer->ppTextures[iMaterial] ) ) ) //此处之所以要将ppTexture指向的纹理数组指针放弃掉? pMeshContainer->ppTextures[iMaterial] = NULL;
注意看这一段,当纹理加载失败时,才会让它=NULL, 如果加载成功,则不会执行这个的。
另外。
//同样此处为什么要放弃?!!