我正在创建一个 Windows Phone 8 应用程序,并且正在使用 SharpDX 加载纹理。
我尝试使用加载 PNG,Content.Load<Texture2D>("filename.png")
但出现错误,我意识到 Windows Phone 8 中的 SharpDX 只接受 DDS 纹理,不接受 PNG/JPEG/BMP 等。我已经将我的 PNG 转换为 DDS 使用texconv filename.png
并将文件添加到我的解决方案中,就像我在项目中使用的其他文件一样(我可以正确加载)。当我运行我的应用程序时,我遇到了一个异常:
{SharpDX.Serialization.InvalidChunkException: Unexpected chunk [DDS /0x20534444] instead of [TKFX/0x58464B54]
at SharpDX.Serialization.BinarySerializer.BeginChunk(FourCC chunkId)}
好吧,我已经使用该texconv
工具将我的有效 PNG 转换为 DDS。我看是文件格式错误,fourCC码对应的是DDS,应该是这样的。但是 SharpDX 期望 TKFX 格式(工具包效果?)而不是 DDS。为什么?我正在尝试使用Content.Load<Texture2D>
not加载纹理Content.Load<Effect>
(我也有它来加载着色器并且它工作得很好)。
如果有人知道如何加载 PNG 而不是 DDS,那就更好了!