我的.OBJ文件模型加载器出现问题。我在模型中读得很好,但是在读取.mtl文件时,只有在硬编码路径时才会打开文件。
我检查了给定的路径,它匹配我硬编码的路径(工作得很好)。但是,当我尝试让代码从.obj读取路径或者只是在代码中构建它时,文件就不会打开。
贝娄是相关代码。如果我错过了什么,请告诉我,我会提供。
bool ObjLoader::LoadOBJ(const std::string& filename,
const std::string& filePath,
std::vector<Vertex::PosNormal>& vertices,
std::vector<USHORT>& indices,
std::vector<MeshGeometry::Subset>& subsets,
std::vector<OBJMaterial>& mats)
{
std::wifstream fin (filename.c_str()); // <-- .obj path
if (fin)
{
while (fin)
{
// reads in .obj file
// works just fine
// meshMatLib read in from here
}
}
// Close the obj file
fin.close();
fin.clear();
fin.open(meshMatLib); // <-- uses hardcoded path above for /mtl
if (fin) // if the material file is open
{
while (fin)
{
// loads Mtl file
// will not open
}
}
}
以下行来自.obj文件,用于.mtl路径。 mtllib Models \ testTeapot \ testTeapot.mtl
有效的硬编码路径是:
"Models\\testTeapot\\testTeapot.mtl"
调用LoadOBJ时传入方法(&#39; filePath&#39;)
当我对路径进行硬编码时,这种情况有效,这表明问题与路径有关。有没有办法可以获得有关std :: wifstream失败原因的更多信息?
提前感谢您的帮助,这让我疯狂了几天。