public void Load(Stream stream) { Name = FileInfo.FileName; using (var reader = new FileReader(stream)) { MainHeader = reader.ReadStruct <Header>(); PfHeader = reader.ReadStruct <DDSPFHeader>(); if (IsDX10) { Dx10Header = reader.ReadStruct <DX10Header>(); } byte[] Components = new byte[4] { 0, 1, 2, 3 }; bool Compressed = false; bool HasLuminance = false; bool HasAlpha = false; bool IsRGB = false; switch (PfHeader.Flags) { case 4: Compressed = true; break; case 2: case (uint)DDPF.LUMINANCE: HasLuminance = true; break; case (uint)DDPF.RGB: IsRGB = true; break; case 0x41: IsRGB = true; HasAlpha = true; break; } ToGenericFormat(); if (!IsDX10 && !this.IsBCNCompressed()) { Platform.OutputFormat = DDS_RGBA.GetUncompressedType(this, Components, IsRGB, HasAlpha, HasLuminance, PfHeader); } Depth = 1; Width = MainHeader.Width; Height = MainHeader.Height; MipCount = MainHeader.MipCount == 0 ? 1 : MainHeader.MipCount; ArrayCount = IsCubeMap ? (uint)6 : 1; } }
public void Load(Stream stream) { using (var reader = new FileReader(stream)) { MainHeader = reader.ReadStruct <Header>(); PfHeader = reader.ReadStruct <DDSPFHeader>(); if (IsDX10) { Dx10Header = reader.ReadStruct <DX10Header>(); } int Dx10Size = Dx10Header != null ? 20 : 0; reader.TemporarySeek((int)(4 + MainHeader.Size + Dx10Size), SeekOrigin.Begin); ImageData = reader.ReadBytes((int)(reader.BaseStream.Length - reader.BaseStream.Position)); } }
public DDS() { MainHeader = new Header(); PfHeader = new DDSPFHeader(); Dx10Header = new DX10Header(); }