如何编译SharpDX工具包的纹理

时间:2014-03-24 06:25:20

标签: c# .net directx toolkit sharpdx

我正在尝试使用 tkfxc.exe grass_top.png 为SharpDX工具包编译纹理。它工作正常,但它给了我一个42字节的文件,名为 grass_top.tkb ,而原始文件是~5KB。如果我试试

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

它表示未处理的类型&#39; System.NotSupportedException&#39;发生在SharpDX.Toolkit.dll中。其他信息:无法加载内容。谢谢:))

2 个答案:

答案 0 :(得分:2)

tkfxc用于编译着色器,因此它需要一个hlsl文件。看起来它能够将png读作空字符串,这就是为什么你有一个空的着色器字节码的原因。检查有关如何集成纹理的工具包示例,但它们基本上被复制到内容目录而无需进一步处理。样本正在使用构建操作ToolkitTexture将纹理复制到输出(以便将来,如果有一些处理,它将开箱即用)

答案 1 :(得分:0)

我写了一个小工具来预编译纹理。

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