AoMBrgEditor.Dds.Dds C# (CSharp) Метод

Dds() публичный Метод

public Dds ( DdtFile ddt ) : System
ddt DdtFile
Результат System
        public Dds(DdtFile ddt)
        {
            magic = 0x20534444;
            header.size = 124;
            header.flags |= DDS_HEADER.Flags.DDSD_CAPS | DDS_HEADER.Flags.DDSD_HEIGHT | DDS_HEADER.Flags.DDSD_WIDTH | DDS_HEADER.Flags.DDSD_PIXELFORMAT;
            header.height = (uint)(ddt.Height);
            header.width = (uint)(ddt.Width);
            string texelFormat = ddt.GetTexelFormat();
            switch (texelFormat)
            {
                case "DXT1"://dtx1
                    header.flags |= DDS_HEADER.Flags.DDSD_LINEARSIZE;
                    header.pitchOrLinearSize = (uint)(Math.Max(1, (ddt.Width + 3) / 4) * 8);
                    header.ddspf.flags |= DDS_PIXELFORMAT.Flags.DDPF_FOURCC;
                    header.ddspf.fourCC = BitConverter.ToUInt32(Encoding.UTF8.GetBytes(texelFormat), 0);
                    break;
                case "DXT2":
                case "DXT3":
                case "DXT4":
                case "DXT5":
                    header.flags |= DDS_HEADER.Flags.DDSD_LINEARSIZE;
                    header.pitchOrLinearSize = (uint)(Math.Max(1, (ddt.Width + 3) / 4) * 16);
                    header.ddspf.flags |= DDS_PIXELFORMAT.Flags.DDPF_FOURCC;
                    header.ddspf.fourCC = BitConverter.ToUInt32(Encoding.UTF8.GetBytes(texelFormat), 0);
                    break;
                case "1555":
                    header.flags |= DDS_HEADER.Flags.DDSD_PITCH;
                    header.pitchOrLinearSize = (uint)((ddt.Width * 16 + 7) / 8);
                    header.ddspf.flags |= DDS_PIXELFORMAT.Flags.DDPF_RGB | DDS_PIXELFORMAT.Flags.DDPF_ALPHAPIXELS;
                    header.ddspf.rGBBitCount = 16;
                    header.ddspf.rBitMask = 0x7C00;
                    header.ddspf.gBitMask = 0x3E0;
                    header.ddspf.bBitMask = 0x1F;
                    header.ddspf.aBitMask = 0x8000;
                    break;
                case "4444":
                    header.flags |= DDS_HEADER.Flags.DDSD_PITCH;
                    header.pitchOrLinearSize = (uint)((ddt.Width * 16 + 7) / 8);
                    header.ddspf.flags |= DDS_PIXELFORMAT.Flags.DDPF_RGB | DDS_PIXELFORMAT.Flags.DDPF_ALPHAPIXELS;
                    header.ddspf.rGBBitCount = 16;
                    header.ddspf.rBitMask = 0xF00;
                    header.ddspf.gBitMask = 0xF0;
                    header.ddspf.bBitMask = 0xF;
                    header.ddspf.aBitMask = 0xF000;
                    break;
            }
            if (ddt.mipMap > 1)
            {
                header.flags |= DDS_HEADER.Flags.DDSD_MIPMAPCOUNT;
                header.mipMapCount = (uint)(ddt.mipMap + 1);
                header.caps |= DDS_HEADER.Caps.DDSCAPS_MIPMAP | DDS_HEADER.Caps.DDSCAPS_COMPLEX;
            }
            header.reserved1 = new uint[11];
            header.ddspf.size = 32;
            header.caps |= DDS_HEADER.Caps.DDSCAPS_TEXTURE;
            bdata = ddt.imageData;
        }

Same methods

Dds::Dds ( PssgNode node, bool cubePreview ) : System
Dds::Dds ( System fileStream ) : System