Can*_*ğlu 1 texture2d sharpdx windows-phone-8 dds-format
我正在创建一个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>没有Content.Load<Effect>(我也有它加载着色器,它完美地工作).
如果有人发现如何加载PNG而不是DDS,那就更好了!
如果您仍想加载PNG图像,我将在此处保留此代码段:
public static Texture2D FromImage(BitmapImage image, GraphicsDevice device)
{
WriteableBitmap bitmap = new WriteableBitmap(image);
return FromImageData(bitmap.Pixels, bitmap.PixelWidth,
bitmap.PixelHeight, device);
}
public static Texture2D FromImageData(int[] data, int width, int height, GraphicsDevice device)
{
Texture2D texture = Texture2D.New(device, width, height,
PixelFormat.B8G8R8A8.UNorm);
texture.SetData<int>(data);
return texture;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1465 次 |
| 最近记录: |