Atualmente estou trabalhando em um leitor e renderizador gltf usando OpenGL e C++.
Atualmente estou usando fastgltf e continuo recebendo o seguinte erro de compilação:
nenhuma instância do modelo de função
"fastgltf::iterateSceneNodes"
corresponde à lista de argumentos
Estou apenas seguindo o guia de uso aqui https://fastgltf.readthedocs.io/v0.8.x/guides.html#iterating-over-the-node-hierarchy
Aqui está minha função de carregador:
void GLTFHelper::LoadGLTF(std::filesystem::path path)
{
fastgltf::Parser parser;
auto data = fastgltf::GltfDataBuffer::FromPath(path);
auto asset = parser.loadGltf(data.get(), path.parent_path(), fastgltf::Options::None);
auto scene = asset->defaultScene.value();
fastgltf::iterateSceneNodes(asset, scene, fastgltf::math::fmat4x4(),
[&](fastgltf::Node& node, fastgltf::math::fmat4x4 matrix) {
if (node.meshIndex.has_value()) {
std::cout << "Node Here" << std::endl;
}
});
std::cout << "Loaded data" << std::endl;
}
Já incluí o core.hpp
, types.hpp
e tools.hpp
no arquivo de cabeçalho.
Editar:
Estou usando o Visual Studio 2022 para construir meu projeto e ele me dá esse erro exatamente nessa chamada de função:
e erro ao instanciar o modelo no tools.hpp do fastgltf para essa função
Parece que o
fastgltf::Parser::loadGltf
retorna algum tipo de objeto wrapper (ou seja,fastgltf::Expected<fastgltf::Asset>
) enquantofastgltf::iterateSceneNodes
toma uma instância defastgltf::Asset
si mesmo. Você deve verificar se há algum erro noExpected
e "desreferenciá-lo" depois disso: