MCPcopy Create free account
hub / github.com/GPUOpen-Tools/compressonator / SaveDDSFile

Function SaveDDSFile

examples/common/dds_helpers.cpp:793–1081  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

791} D3DFORMAT;
792
793void SaveDDSFile(const char* pszFile, CMP_Texture& texture)
794{
795 FILE* pFile = fopen(pszFile, ("wb"));
796 if (!pFile)
797 return;
798
799 bool DDSet = false;
800
801 switch (texture.format)
802 {
803 case CMP_FORMAT_BC1:
804 case CMP_FORMAT_BC2:
805 case CMP_FORMAT_BC3:
806 case CMP_FORMAT_BC4:
807 case CMP_FORMAT_BC4_S:
808 case CMP_FORMAT_BC5:
809 case CMP_FORMAT_BC5_S: {
810 fwrite(&DDS_HEADER, sizeof(DWORD), 1, pFile);
811 DDSD2 ddsd2;
812 memset(&ddsd2, 0, sizeof(DDSD2));
813 ddsd2.dwSize = sizeof(DDSD2);
814 ddsd2.dwWidth = texture.dwWidth;
815 ddsd2.dwHeight = texture.dwHeight;
816 ddsd2.dwMipMapCount = 1; // For this example code only 1 mip level is used.
817 ddsd2.dwFlags = DDSD_CAPS | DDSD_WIDTH | DDSD_HEIGHT | DDSD_PIXELFORMAT | DDSD_MIPMAPCOUNT;
818 ddsd2.dwFlags |= DDSD_LINEARSIZE;
819 ddsd2.dwLinearSize = texture.dwDataSize;
820 ddsd2.ddpfPixelFormat.dwSize = sizeof(DDPIXELFORMAT);
821 ddsd2.ddsCaps.dwCaps = DDSCAPS_TEXTURE; // In this example texture are just 2D no cubemap or volume
822 ddsd2.ddpfPixelFormat.dwFlags = DDPF_FOURCC;
823
824 switch (texture.format)
825 {
826 case CMP_FORMAT_BC1:
827 ddsd2.ddpfPixelFormat.dwFourCC = FOURCC_DXT1;
828 break;
829 case CMP_FORMAT_BC2:
830 ddsd2.ddpfPixelFormat.dwFourCC = FOURCC_DXT3;
831 break;
832 case CMP_FORMAT_BC3:
833 ddsd2.ddpfPixelFormat.dwFourCC = FOURCC_DXT5;
834 break;
835 case CMP_FORMAT_BC4:
836 ddsd2.ddpfPixelFormat.dwFourCC = FOURCC_BC4U; // FOURCC_ATI1N;
837 break;
838 case CMP_FORMAT_BC4_S:
839 ddsd2.ddpfPixelFormat.dwFourCC = FOURCC_BC4S;
840 break;
841 case CMP_FORMAT_BC5:
842 ddsd2.ddpfPixelFormat.dwFourCC = FOURCC_BC5U; // FOURCC_ATI2N_XY;
843 break;
844 case CMP_FORMAT_BC5_S:
845 ddsd2.ddpfPixelFormat.dwFourCC = FOURCC_BC5S;
846 break;
847 }
848
849 ddsd2.ddpfPixelFormat.dwPrivateFormatBitCount = 0;
850

Callers 3

mainFunction · 0.85
mainFunction · 0.85
mainFunction · 0.85

Calls 3

memsetFunction · 0.85
GetFourCCFunction · 0.85
IsDXT5SwizzledFormatFunction · 0.85

Tested by

no test coverage detected