There are many different ways to create what you want. The two main methods are “artistic” and “procedural”.
Artistic landscape textures assume that the entire landscape is a sigle unique texture which has been cut up into smaller texture tiles. You use a simple indexing scheme to pull the correct texture tile from the database and bind it to the set of triangles under it (very ROAM-friendly). Texture seams are eliminated by a trick called ‘texture borders’, there’s a thread on how to do this - just do a search.
The advantages here are: Unique texture everywhere, lots of freedom in texture creation, and usually looks a lot better. The disadvantages are needing to load from the database (thus need some caching system, etc.), and the database gets very large with increased landscape size, and the need of an artist or other texture creation scheme.
The procedural method is what the other posters have been describing. Basically you have a ‘stack’ of textures (grass, rock, sand, shrub, show, etc…) and for each unit of area (a small sub-branch of your ROAM tree) you choose two of the textures. Using multitexturing you bind the two textures and draw them on with an alpha map to blend them.
The advantages here are: it’s simpler, very efficient on modern cards, gets good results. The disadvantages being: you’re limited to your ‘stack’ of tiles, the textures naturally repeat (very visibly in some cases), much slower on older cards (requires two passes), and you don’t have a lot of flexability artistically.
One of the problems I find most anoying with the stacked-texture blendin system is adding ground effects, like roads, debris, chared ground, etc… With a texture database, you can actually make changes to the textures (when an explosion occurs, or blood splatters), with a stacked-texture blend system this isn’t possible.
I’ve implemented both and chosen to go with texture database for my project.