Невозможно открыть файл.mtl, если путь не указан жестко

У меня проблемы с загрузчиком моделей файлов.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 \testTeapot\testTeapot.mtl

жестко закодированный путь, который работает:

 "Models\\testTeapot\\testTeapot.mtl"

Он передается в метод при вызове LoadOBJ ('filePath')

Тот факт, что это работает, когда я жестко кодирую путь, подсказывает мне, что проблема связана с путем. Есть ли способ получить дополнительную информацию о том, почему произошел сбой std::wifstream?

Заранее спасибо за любую помощь, это сводит меня с ума уже несколько дней.

0 ответов

Другие вопросы по тегам