Как скомпилировать текстуру для набора инструментов SharpDX

Я пытаюсь скомпилировать текстуру для набора инструментов SharpDX, используя tkfxc.exe grass_top.png. Он работает нормально, но дает мне 42-байтовый файл с именем grass_top.tkb, в то время как исходный файл весил ~5 КБ. Если я попытаюсь

Texture2D grass_top=Content.Load<Texture2D>("grass_top");

пишет Необработанное исключение типа System.NotSupportedException в SharpDX.Toolkit.dll. Дополнительная информация: Не удалось загрузить контент. Спасибо :)


person user3430914    schedule 24.03.2014    source источник


Ответы (2)


tkfxc используется для компиляции шейдеров, поэтому ожидается файл hlsl. Похоже, он смог прочитать png как пустую строку, поэтому вы получили пустой байт-код шейдера. Посмотрите примеры инструментов, как интегрировать текстуры, но они в основном копируются в каталог содержимого без какой-либо дальнейшей обработки. Образцы используют действие сборки ToolkitTexture для копирования текстуры на выход (чтобы в дальнейшем, если будет какая-то обработка, работать из коробки)

person xoofx    schedule 25.03.2014

Я написал небольшой инструмент для предварительной компиляции текстур.

using SharpDX.Toolkit.Graphics;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace tktex
{
    class Program
    {
        static void Main(string[] args)
        {
            if (args.Length == 0)
            {
                Console.WriteLine("Usage: tktex <texture file>");
                return;
            }

            try
            {
                string fileName = args[0];
                string newName = Path.Combine(Path.GetDirectoryName(fileName), Path.GetFileNameWithoutExtension(fileName) + ".tktx");

                var image = Image.Load(fileName);
                image.Save(newName, ImageFileType.Tktx);

                Console.WriteLine(fileName + " => " + newName);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
            }
        }
    }
}

https://github.com/dermeister0/SharpDX.Tools

person Der_Meister    schedule 04.11.2014