private static Squish.DDS.PixelFormat GetPixelFormat(TextureFile texture) { // https://msdn.microsoft.com/en-us/library/windows/desktop/bb173059.aspx "DXGI_FORMAT enumeration" // https://msdn.microsoft.com/en-us/library/windows/desktop/cc308051.aspx "Legacy Formats: Map Direct3D 9 Formats to Direct3D 10" switch (texture.Format) { case 71: // DXGI_FORMAT_BC1_UNORM { var pixelFormat = new Squish.DDS.PixelFormat(); pixelFormat.Initialise(Squish.DDS.FileFormat.DXT1); return(pixelFormat); } case 74: // DXGI_FORMAT_BC2_UNORM { var pixelFormat = new Squish.DDS.PixelFormat(); pixelFormat.Initialise(Squish.DDS.FileFormat.DXT3); return(pixelFormat); } case 77: // DXGI_FORMAT_BC3_UNORM { var pixelFormat = new Squish.DDS.PixelFormat(); pixelFormat.Initialise(Squish.DDS.FileFormat.DXT5); return(pixelFormat); } case 87: // DXGI_FORMAT_B8G8R8A8_UNORM { var pixelFormat = new Squish.DDS.PixelFormat(); pixelFormat.Initialise(Squish.DDS.FileFormat.A8R8G8B8); return(pixelFormat); } case 61: // DXGI_FORMAT_R8_UNORM case 80: // DXGI_FORMAT_BC4_UNORM case 83: // DXGI_FORMAT_BC5_UNORM case 98: // DXGI_FORMAT_BC7_UNORM { var pixelFormat = new Squish.DDS.PixelFormat(); pixelFormat.Size = pixelFormat.GetSize(); pixelFormat.FourCC = 0x30315844; // 'DX10' return(pixelFormat); } } throw new NotSupportedException(); }
// https://msdn.microsoft.com/en-us/library/windows/desktop/bb173059.aspx "DXGI_FORMAT enumeration" // https://msdn.microsoft.com/en-us/library/windows/desktop/cc308051.aspx "Legacy Formats: Map Direct3D 9 Formats to Direct3D 10" private static Squish.DDS.PixelFormat GetPixelFormat(TextureDX10ArchiveFile.Entry entry) { switch (entry.Format) { case 71: // DXGI_FORMAT_BC1_UNORM { var pixelFormat = new Squish.DDS.PixelFormat(); pixelFormat.Initialise(Squish.DDS.FileFormat.DXT1); return(pixelFormat); } case 74: // DXGI_FORMAT_BC2_UNORM { var pixelFormat = new Squish.DDS.PixelFormat(); pixelFormat.Initialise(Squish.DDS.FileFormat.DXT3); return(pixelFormat); } case 77: // DXGI_FORMAT_BC3_UNORM { var pixelFormat = new Squish.DDS.PixelFormat(); pixelFormat.Initialise(Squish.DDS.FileFormat.DXT5); return(pixelFormat); } case 87: // DXGI_FORMAT_B8G8R8A8_UNORM { var pixelFormat = new Squish.DDS.PixelFormat(); pixelFormat.Initialise(Squish.DDS.FileFormat.A8R8G8B8); return(pixelFormat); } case 61: // DXGI_FORMAT_R8_UNORM case 83: // DXGI_FORMAT_BC5_UNORM case 98: // DXGI_FORMAT_BC7_UNORM { var pixelFormat = new Squish.DDS.PixelFormat(); pixelFormat.Size = pixelFormat.GetSize(); pixelFormat.FourCC = 0x30315844; // 'DX10' return(pixelFormat); } } throw new NotSupportedException(); }