示例#1
0
        static List <TeximpNet.Surface> GenerateMipmapsRGBA(string input, MipmapMethod mipm)
        {
            List <TeximpNet.Surface> mips = new List <TeximpNet.Surface>();
            var surface = TeximpNet.Surface.LoadFromFile(input);

            surface.ConvertTo(TeximpNet.ImageConversion.To32Bits);
            surface.GenerateMipMaps(mips, (TeximpNet.ImageFilter)mipm);
            return(mips);
        }
        public static List <LUtfNode> TGAMipmaps(string input, MipmapMethod mipm, bool flip)
        {
            var raw   = ReadFile(input, flip);
            var mips  = Crunch.GenerateMipmaps(raw.Data, raw.Width, raw.Height, (CrnglueMipmaps)mipm);
            var nodes = new List <LUtfNode>(mips.Count);

            for (int i = 0; i < mips.Count; i++)
            {
                var n = new LUtfNode {
                    Name = "MIP" + i, Data = TargaRGBA(mips[i].Bytes, mips[i].Width, mips[i].Height)
                };
                nodes.Add(n);
            }
            return(nodes);
        }
示例#3
0
        public static byte[] CreateDDS(string input, DDSFormat format, MipmapMethod mipm, bool slow, bool flip)
        {
            LoadLibraries();
            using (var stream = new MemoryStream())
            {
                using (var compress = new Compressor())
                {
                    compress.Input.GenerateMipmaps = false;
                    List <TeximpNet.Surface> toDispose = null;
                    if (mipm == MipmapMethod.None)
                    {
                        using (var surface = TeximpNet.Surface.LoadFromFile(input))
                        {
                            if (flip)
                            {
                                surface.FlipVertically();
                            }
                            compress.Input.SetData(surface);
                        }
                    }
                    else
                    {
                        var mips = GenerateMipmapsRGBA(input, mipm, flip);
                        compress.Input.SetTextureLayout(TextureType.Texture2D, mips[0].Width, mips[0].Height);

                        for (int i = 0; i < mips.Count; i++)
                        {
                            compress.Input.SetMipmapData(mips[i], i);
                        }
                        toDispose = mips;
                    }
                    compress.Compression.Format  = (CompressionFormat)format;
                    compress.Compression.Quality = slow ? CompressionQuality.Production : CompressionQuality.Normal;
                    compress.Compression.SetBGRAPixelFormat();
                    compress.Process(stream);
                    if (toDispose != null)
                    {
                        foreach (var sfc in toDispose)
                        {
                            sfc.Dispose();
                        }
                    }
                }
                return(stream.ToArray());
            }
        }
示例#4
0
        public static unsafe List <LUtfNode> TGAMipmaps(string input, MipmapMethod mipm)
        {
            LoadLibraries();
            var nodes = new List <LUtfNode>();
            var mips  = GenerateMipmapsRGBA(input, mipm);

            for (int i = 0; i < mips.Count; i++)
            {
                using (var stream = new MemoryStream()) {
                    mips[i].SaveToStream(TeximpNet.ImageFormat.TARGA, stream);
                    var n = new LUtfNode()
                    {
                        Name = "MIP" + i, Data = stream.ToArray()
                    };
                    nodes.Add(n);
                    mips[i].Dispose();
                }
            }
            return(nodes);
        }
        public static byte[] CreateDDS(string input, DDSFormat format, MipmapMethod mipm, bool slow, bool flip)
        {
            var raw = ReadFile(input, flip);

            return(Crunch.CompressDDS(raw.Data, raw.Width, raw.Height, (CrnglueFormat)format, (CrnglueMipmaps)mipm, slow));
        }