Проблема с загрузкой текстур из библиотеки Russimp
Я создал класс 3д модели на основе c++ кода из статью opengl.learn. Так используется библиотека assimp, а так как я не нашёл аналогов в rust я решил использовать библиотеку Russimp. Все мешы у меня загружаются верно, но когда дело доходит до загрузки текстур у меня возникает проблема. После получения материала из сцены я решил поставить println!("textures massive len: {}", material.textures.len());
и после запуска кода у меня почему-то отображается textures massive len: 0
. Вот так я загружаю сцену:
...
let scene: Scene = match Scene::from_file(
&path.as_ref(),
vec![
PostProcess::Triangulate, PostProcess::FlipUVs, PostProcess::GenerateSmoothNormals,
PostProcess::CalculateTangentSpace
]) {
Ok(v) => v,
Err(e) => return Err(LoadModelErrors::SceneCreateError(e))
};
...
А вот так текстуры (хотя в массив текстур пуст, здесь тоже может быть проблема):
fn load_material_textures(
vec: &mut Vec<Texture2D>, material: &russimp::material::Material,
tex_type: russimp::material::TextureType, type_name: String, dir: &String
) {
let i = match material.textures.get(&tex_type) {
None => return,
Some(v) => v.borrow()
};
println!("texture_path: {}/{}", dir, i.filename);
// данные для загрузки текстур
let load_data = Texure2dData {
min_filter: TexMipMap::LINEAR_LINEAR,
mag_filter: TexMipMap::LINEAR,
..Default::default()
};
// безопасная обёртка opengl вызовов
let mut texture = Texture2D::new(
format!("{}/{}", dir, i.filename), load_data
);
// имя текстуры в шейдере
texture.type_ = type_name;
vec.push(texture);
}