Tu fais de la répétition de texture avec makePlanarTextureMapping (IMesh *mesh, f32 resolution=0.001f) et en jouant avec la résolution.
void Map::constructMap(float lenght, float width, irr::video::IVideoDriver *driver, irr::scene::ISceneManager *sceneManager)
{
Terrain_ = sceneManager->addTerrainSceneNode("./ressources/HeightMap.bmp", 0, -1, irr::core::vector3df(0.f, 0.f, 0.f), irr::core::vector3df(0.f, 0.f, 0.f), irr::core::vector3df(lenght, 4.4f, width), irr::video::SColor ( 255, 255, 255, 255 ), 5, irr::scene::ETPS_17, 3);
Terrain_->setMaterialFlag(irr::video::EMF_LIGHTING, true);
Terrain_->setMaterialFlag(irr::video::EMF_ANISOTROPIC_FILTER , true);
Terrain_->setMaterialTexture(0, driver->getTexture("./ressources/terrdirtgrass.jpg"));
/// créé un mapping plat, il faut jouer avec "résolution_à_réglée" pour donner le nombre de répétition voulue
sceneManager->getMeshManipulator()->makePlanarTextureMapping(Terrain_->getMesh(), résolution_à_réglée);
if (lenght >= 500)
Terrain_->scaleTexture(500, 500);
else
Terrain_->scaleTexture(lenght, lenght);
mapSizeX_ = lenght;
mapSizeZ_ = width;
}