int32 SceneHelper::EnumerateModifiedTextures(DAVA::Scene *forScene, DAVA::Map<DAVA::Texture *, DAVA::Vector< DAVA::eGPUFamily> > &textures) { int32 retValue = 0; textures.clear(); TexturesMap allTextures; EnumerateSceneTextures(forScene, allTextures, EXCLUDE_NULL); for(TexturesMap::iterator it = allTextures.begin(); it != allTextures.end(); ++it) { DAVA::Texture * texture = it->second; if(NULL == texture) { continue; } DAVA::TextureDescriptor *descriptor = texture->GetDescriptor(); if(NULL == descriptor) { continue; } DVASSERT(descriptor->compression); DAVA::Vector< DAVA::eGPUFamily> markedGPUs; for(int i = 0; i < DAVA::GPU_DEVICE_COUNT; ++i) { eGPUFamily gpu = (eGPUFamily)i; if(GPUFamilyDescriptor::IsFormatSupported(gpu, (PixelFormat)descriptor->compression[gpu].format)) { FilePath texPath = descriptor->GetSourceTexturePathname(); if(texPath.Exists() && !descriptor->IsCompressedTextureActual(gpu)) { markedGPUs.push_back(gpu); retValue++; } } } if(markedGPUs.size() > 0) { textures[texture] = markedGPUs; } } return retValue; }