示例#1
0
        public static unsafe byte[] CompressDDS(byte[] input, int width, int height, CrnglueFormat format,
                                                CrnglueMipmaps mipmaps, bool highQualitySlow)
        {
            IntPtr output;
            int    outputSize;

            fixed(byte *b = input)
            {
                if (CrnGlueCompressDDS((IntPtr)b, width, height, format, mipmaps, highQualitySlow, out output, out outputSize) == 0)
                {
                    throw new Exception("Compression failed");
                }
            }

            var result = Copy(output, outputSize);

            CrnGlueFreeDDS(output);
            Thread.Sleep(10000);
            return(result);
        }
示例#2
0
        public static unsafe List <CrunchMipLevel> GenerateMipmaps(byte[] input, int width, int height, CrnglueMipmaps mipmaps)
        {
            CrnglueMipmapOutput output;

            fixed(byte *b = input)
            {
                if (CrnGlueGenerateMipmaps((IntPtr)b, width, height, mipmaps, out output) == 0)
                {
                    throw new Exception("Mipmap generation failed");
                }
            }

            var result = new List <CrunchMipLevel>();

            for (int i = 0; i < output.levelCount; i++)
            {
                result.Add(new CrunchMipLevel()
                {
                    Width  = output.levels[i].width,
                    Height = output.levels[i].height,
                    Bytes  = Copy(output.levels[i].data, output.levels[i].dataSize)
                });
            }
            CrnGlueFreeMipmaps(ref output);
            return(result);
        }
示例#3
0
 static extern int CrnGlueGenerateMipmaps(IntPtr input, int width, int height, CrnglueMipmaps mipmaps,
                                          out CrnglueMipmapOutput output);
示例#4
0
 static extern int CrnGlueCompressDDS(IntPtr input, int inWidth, int inHeight, CrnglueFormat format,
                                      CrnglueMipmaps mipmaps, bool highQualitySlow, out IntPtr output, out int outputSize);