Beispiel #1
0
        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;
            }
        }
Beispiel #2
0
        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));
            }
        }
Beispiel #3
0
 public DDS()
 {
     MainHeader = new Header();
     PfHeader   = new DDSPFHeader();
     Dx10Header = new DX10Header();
 }