Невозможно открыть файл.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?
Заранее спасибо за любую помощь, это сводит меня с ума уже несколько дней.