Bool CTexture3D::SetRawDataFromFile( const CFilePath& path ) { if( path.Exist() == FALSE ) return FALSE; CoreManager.GetMemoryManager().GetStackHeap().PushMarker(); { CImageFile* imageFile = NULL; CDDSFile ddsFile; UInt32 offset = 0; Byte* destinationdata; UInt8 index; Char ext[6]; path.GetExtension( ext, 6 ); StringToLower( ext, ext, 6 ); if( StringCompare( ext, "dds" ) == 0 ) imageFile = &ddsFile; if( imageFile && !imageFile->Load( path ) ) { CoreManager.GetMemoryManager().GetStackHeap().PopMarker(); return FALSE; } DebugAssert( imageFile->GetIsVolumeTexture() ); SetTextureInfo( imageFile->GetTextureInfo() ); m_RawData.SetItemCount( GetTextureInfo().GetTextureByteCount() ); destinationdata = m_RawData.GetBuffer(); for( index = 0 ; index < GetTextureInfo().MipMapCount; index++) { UInt32 mipMapSize; const Byte* srcData = imageFile->GetSurfaceData( 0, index, mipMapSize ); MemoryCopy( srcData, destinationdata + offset, mipMapSize ); offset += mipMapSize; } } CoreManager.GetMemoryManager().GetStackHeap().PopMarker(); return TRUE; }