   Texture sets for random generated terrain in dx9 and c++
  Hi, I've been trying to setup texture sets, but I keep getting stuck in how to approach this in a reasonable solution.Current code im using for preset texture for the terrain.What I mean by texture set is likeWinterset = includes, snow, snowy mountain and snowy groundSummerset = includes, grass, mountain and snowy mountain topsDesert/Desert Canyon = includes, Sand, clay/mud and rockyTerrain.hHRESULTCreateTextureFromFileInZip( LPDIRECT3DDEVICE9 pDevice,  LPCSTR szZip, LPCSTR szFile, LPDIRECT3DTEXTURE9 *ppTexture );std::vector<IDirect3DTexture9*> m_diffuseMaps;Terrain.cpp//Load textures IDirect3DTexture9* grass = NULL, *mount = NULL, *snow = NULL;//LOAD TEXTURES FROM Terrain.zip if(FAILED(CreateTextureFromFileInZip(Dev, "textures/Terrain.zip", "BaseGroundTex/grass.jpg", &grass))) debug.Print("Could not load grass.jpg");if(FAILED(CreateTextureFromFileInZip(Dev, "textures/Terrain.zip", "BaseMountainTex/mountain.jpg", &mount))) debug.Print("Could not load mountain.jpg");if(FAILED(CreateTextureFromFileInZip(Dev, "textures/Terrain.zip", "BaseMountainSnowTopTex/snow.jpg", &snow))) debug.Print("Could not load snow.jpg");m_diffuseMaps.push_back(grass);m_diffuseMaps.push_back(mount);m_diffuseMaps.push_back(snow);Any tips on how I would approach such a solution? free Tutorials / not to expensive tutorials would also help alot. : ) Any specific books on the this?Also, as you see I load textures from Zip files, do anyone have a tweaked/ tips to a solution to the loading to load multiple files from Zip in one stream?   
  First, unfortunately I don't know of a way to load/stream multiple textures from a file of any sort.Your approach to texturing terrain appears to be reasonable, depending on how you actually set the texture during rendering.Another approach, which I've used for both seasons of the year and different areas of the terrain, is to use arrays of texture pointers - if you have the memory for it and want to avoid loading textures when the terrain area or season changes.E.g.,int season = 0; // 0=summer, 1=autumn, 2=winterLPDIRECT3DTEXTURE9 lowland[3], midaltitude[3], highland[3];...CreateTexture..(..,"summerLowland",&lowland[0]);CreateTexture..(..,"autumnLowland",&lowland[1]);CreateTexture..(..,"winterLowland",&lowland[2]);..if( new_season=="winter" ) season = 2;..// rendering loopdev->SetTexture(0,lowland[season]);// render lowland;  I set the texture rendering like thism_pDevice->SetTexture(0, m_pAlphaMap);m_pDevice->SetTexture(1, m_diffuseMaps[0]);//Grassm_pDevice->SetTexture(2, m_diffuseMaps[1]);//Mountainm_pDevice->SetTexture(3, m_diffuseMaps[2]);//Snowm_pDevice->SetTexture(4, m_pFogOfWarTexture);//Fog-of-War   