我想在朋友的計算機上測試我的應用程序,以檢查我的工作是否在其他人的計算機上運行。 (我是否包含所有庫?等等)處理DDS文件時BitmapDecoder的崩潰
但是,當我加載* .dds紋理時,我的應用程序崩潰。我在場景的2D背景中使用它們。下面是我使用的加載DDS紋理並將其轉換爲位圖的代碼:
using (SharpDX.WIC.BitmapDecoder bitmapDecoder = new SharpDX.WIC.BitmapDecoder(ImagingFactory, new MemoryStream(iconInfo.Data, false), SharpDX.WIC.DecodeOptions.CacheOnDemand))
{
using (SharpDX.WIC.FormatConverter formatConverter = new SharpDX.WIC.FormatConverter(ImagingFactory))
{
formatConverter.Initialize(bitmapDecoder.GetFrame(0), SharpDX.WIC.PixelFormat.Format32bppPRGBA, SharpDX.WIC.BitmapDitherType.None, null, 0.0, SharpDX.WIC.BitmapPaletteType.Custom);
SharpDX.DataStream dataStream = new SharpDX.DataStream(formatConverter.Size.Height * formatConverter.Size.Width * 4, true, true);
formatConverter.CopyPixels(formatConverter.Size.Width * 4, dataStream);
_icons.Add(iconInfo.Name, new SharpDX.Direct2D1.Bitmap(renderTarget, new SharpDX.Size2(formatConverter.Size.Width, formatConverter.Size.Height), dataStream,
formatConverter.Size.Width * 4, bitmapProperties));
}
}
「iconInfo.Data」是一個DDS紋理數據字節。
拋出的異常是
SharpDX.SharpDXException: HRESULT: [0x88982F50], Module: [SharpDX.WIC], ApiCode: [WINCODEC_ERR_COMPONENTNOTFOUND/Componentnotfound], Message: Unknown
at SharpDX.Result.CheckError()
at SharpDX.WIC.ImagingFactory.CreateDecoderFromStream_(IntPtr streamRef, Nullable`1 guidVendorRef, DecodeOptions metadataOptions, BitmapDecoder decoderOut)
at SharpDX.WIC.BitmapDecoder..ctor(ImagingFactory factory, Stream streamRef, DecodeOptions metadataOptions)
你有任何想法是什麼引起的問題?
沒有想法?沒有人? :' - ( – Endgegner85
WINCODEC_ERR_COMPONENTNOTFOUND表示您已嘗試解碼圖像,並且沒有安裝合適的編解碼器。您正在測試哪個版本的Windows?並且可以在Windows照片查看器中打開DDS文件嗎? – saucecontrol
在我的機器上Win10,包括所有更新)一切都很好,我的朋友在他的電腦上使用「Microsoft Windows 7 Home Premium,64-Bit Version 6.1.7601」測試了我的遊戲 – Endgegner85