public static byte[] WrapToDDS(Stream stream, DDSConvertParameters @params) { byte[] buffer = new byte[4 + HeaderSize + @params.DataLength]; using (MemoryStream memStream = new MemoryStream(buffer)) { using (BinaryWriter writer = new BinaryWriter(memStream)) { writer.Write(MagicNumber); writer.Write(HeaderSize); DDSDFlags flags = DDSDFlags.DDSD_CAPS | DDSDFlags.DDSD_HEIGHT | DDSDFlags.DDSD_WIDTH | DDSDFlags.DDSD_PIXELFORMAT | @params.MipMapFlag; writer.Write((uint)flags); writer.Write(@params.Height); writer.Write(@params.Width); writer.Write(@params.PitchOrLinearSize); writer.Write(Depth); writer.Write(@params.MipMapCount); for (int i = 0; i < 11; i++) // reserved { writer.Write(0); } DDSPixelFormat pixelFormat = new DDSPixelFormat() { Flags = @params.PixelFormatFlags, FourCC = @params.FourCC, RGBBitCount = @params.RGBBitCount, RBitMask = @params.RBitMask, GBitMask = @params.GBitMask, BBitMask = @params.BBitMask, ABitMask = @params.ABitMask, }; pixelFormat.Write(writer); writer.Write((uint)@params.Caps); writer.Write((uint)Caps2); writer.Write(0); // caps3 writer.Write(0); // caps4 writer.Write(0); // reserved stream.CopyStream(writer.BaseStream, @params.DataLength); } } return(buffer); }
public static bool IsDepth(this DDSDFlags _this) { return((_this & DDSDFlags.DEPTH) != 0); }
public static bool IsLinearSize(this DDSDFlags _this) { return((_this & DDSDFlags.LINEARSIZE) != 0); }
public static bool IsMipMapCount(this DDSDFlags _this) { return((_this & DDSDFlags.MIPMAPCOUNT) != 0); }
public static bool IsPixelFormat(this DDSDFlags _this) { return((_this & DDSDFlags.PIXELFORMAT) != 0); }
public static bool IsPitch(this DDSDFlags _this) { return((_this & DDSDFlags.PITCH) != 0); }
public static bool IsWidth(this DDSDFlags _this) { return((_this & DDSDFlags.WIDTH) != 0); }
public static bool IsHeight(this DDSDFlags _this) { return((_this & DDSDFlags.HEIGHT) != 0); }
public static bool IsCaps(this DDSDFlags _this) { return((_this & DDSDFlags.CAPS) != 0); }