除非路径是硬编码的,否则无法打开.mtl文件

时间:2015-04-08 19:31:51

标签: c++ directx ifstream .obj wifstream

我的.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失败原因的更多信息?

提前感谢您的帮助,这让我疯狂了几天。

0 个答案:

没有答案