Невозможно открыть файл .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

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]