Beispiel #1
0
        static void ConvertTXS3Texture(string path)
        {
            if (!_texConvChecked && !File.Exists(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "texconv.exe")))
            {
                Console.WriteLine("TexConv (image to DDS tool) is missing. Download it from https://github.com/microsoft/DirectXTex/releases and place it next to the tool.");
                return;
            }

            _texConvChecked = true;
            _texConvExists  = true;

            var texSet = new TextureSet3();

            texSet.FromFile(path);

            Console.WriteLine($"Found: {texSet.Textures.Count} texture(s)");

            string dir = Path.GetDirectoryName(path);

            for (int i = 0; i < texSet.Textures.Count; i++)
            {
                var texture = texSet.Textures[i];
                Console.WriteLine($"Format: {texture.Format} - {texture.Width}x{texture.Height} ({texture.Mipmap} mipmaps)");

                if (string.IsNullOrEmpty(texture.Name))
                {
                    if (texSet.Textures.Count == 1)
                    {
                        texture.Name = Path.GetFileNameWithoutExtension(path);
                    }
                    else
                    {
                        texture.Name = Path.GetFileNameWithoutExtension(path) + $"_{i}";
                    }
                }
                else
                {
                    Console.WriteLine($"Texture Name: {texture.Name}");
                }

                texture.SaveAsPng(dir);
            }

            Console.WriteLine($"Converted {currentFileName} to png.");
        }