/// <summary> /// Converts a DDS_HEADER object into a byte array. /// </summary> /// <param name="header"></param> /// <returns></returns> public static byte[] GetHeaderBytes(DDS_HEADER header) { int size = Marshal.SizeOf(header); byte[] arr = new byte[size]; IntPtr ptr = Marshal.AllocHGlobal(size); Marshal.StructureToPtr(header, ptr, true); Marshal.Copy(ptr, arr, 0, size); Marshal.FreeHGlobal(ptr); return(arr); }
/// <summary> /// Converts an array of bytes into a DDS header object. /// </summary> /// <param name="byteArray"></param> /// <returns></returns> public static DDS_HEADER GetHeaderFromBytes(byte[] byteArray) { DDS_HEADER headerObject = new DDS_HEADER(); int size = Marshal.SizeOf(headerObject); IntPtr ptr = Marshal.AllocHGlobal(size); Marshal.Copy(byteArray, 0, ptr, size); headerObject = (DDS_HEADER)Marshal.PtrToStructure(ptr, headerObject.GetType()); Marshal.FreeHGlobal(ptr); return(headerObject); }
public static bool DDS_CompressionBool(DDS_HEADER header) => header.ddspf.dwFourCC.Equals("DXT1");