经过调试,发现贴图总是为最后一个材质面的材质,这是在装载贴图时,最终装载贴图的地址是一样的。
通过调用
D3DX11CreateShaderResourceViewFromFileA(
ID3D11Device* pDevice,
LPCSTR pSrcFile,
D3DX11_IMAGE_LOAD_INFO *pLoadInfo,
ID3DX11ThreadPump* pPump,
ID3D11ShaderResourceView** ppShaderResourceView,
HRESULT* pHResult);
这个函数,把pSrcFile这个文件装载到 ID3D11ShaderResourceView 中 , 为什么贴图地址会一样呢?
在装载时使用下面的函数
//提取材质文件中材质信息
bool ObjLoader::ParseMaterialFile(ID3D11Device* device, char* fileName)
{
std::ifstream inFile; //声明一个文件输入流对象
std::string fullFileName = m_strResPath + fileName; //获取文件全名
inFile.open(fullFileName); //打开文件
if(inFile.fail()) //判断文件打开是否成功
{
return false;
}
ObjMaterial* pMat = nullptr; //声明一个ObjMaterial材质对象
while(true) //通过循环逐行读取材质文件中的内容
{