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