Пример #1
0
        public TextureMetadata GetMetadata(string filePath)
        {
            Model.TextureMetadata metadata;
            var result = ImagingDriver.GetTextureMetadata(filePath, out metadata);

            return(result >= 0
                       ? new TextureMetadata
            {
                Height = metadata.Height,
                Width = metadata.Width,
                MipmapsCount = metadata.MipmapsCount,
                Format = (DxgiFormat)metadata.DxgiFormat
            }
                       : null);
        }
Пример #2
0
        public Texture Convert(string filePath, TextureConversionSettings settings)
        {
            Model.Texture texture;
            var           textureConverstionSettings = new Model.TextureConversionSettings(
                settings.MaxHeight,
                settings.MaxWidth,
                (uint)settings.OutputFormat,
                (uint)settings.ColorSpace,
                settings.KeepMipmaps,
                (uint)settings.FileType);

            var result = ImagingDriver.ConvertTexture(filePath, textureConverstionSettings, out texture);

            if ((result < 0) || (texture.Buffer == IntPtr.Zero))
            {
                return(null);
            }

            try
            {
                var metadata = new TextureMetadata
                {
                    Height       = texture.Metadata.Height,
                    Width        = texture.Metadata.Width,
                    MipmapsCount = texture.Metadata.MipmapsCount,
                    Format       = (DxgiFormat)texture.Metadata.DxgiFormat
                };

                var output = new Texture
                {
                    Buffer   = new byte[texture.Size],
                    Metadata = metadata
                };

                Marshal.Copy(texture.Buffer, output.Buffer, 0, output.Buffer.Length);

                return(output);
            }
            finally
            {
                ImagingDriver.ReleaseTextureBuffer(texture.Buffer);
            }
        }