Не вижу особой проблемы в вашем коде.
Формат путей файлов строго определен, поэтому не нужно никаких рекурсий.
Вся работа разбивается на 2 шага:
1. Определить какие типы текстур доступны.
2. Загрузить все текстуры для каждого из типов.
Я бы разбил эту логику на 2 отдельных функции. Первая возвращает список доступных типов, причем тип задается enum, а функция внутри сопоставляет текстовое название папки с enum.
QList<TextureType> getAvailableTextureTypes();
Вторая функция берет на вход тип текстуры и загружает все доступные файлы этого типа.
QList<Texture> loadTexturesForType(TextureType type);
Ну и основная функция загрузки:
QMap<TextureType, QList<Texture>> loadTextures()
{
QMap<TextureType, QList<Texture>> result;
for (auto type : getAvailableTextureTypes()) {
result.insert(type, loadTexturesForType(type));
}
return result;
}