2017-05-10 8 views
0

내 컴퓨터를 다른 사람의 컴퓨터에서 실행 중인지 확인하려면 친구 컴퓨터에서 응용 프로그램을 테스트하고 싶습니다. (모든 라이브러리를 포함 했습니까?)DDS 파일을 처리 할 때 BitmapDecoder 크래시가 발생했습니다.

그러나 * .dds 텍스처를로드하면 응용 프로그램이 충돌합니다. 내 장면의 2D 배경에서 사용합니다.

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 텍스처의 데이터 바이트가된다 : 여기 비트 맵로 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) 

당신이 문제를 일으키는 어떤 생각을 가지고 있습니까?

+0

아이디어가 없습니까? 아무도? : '- ( – Endgegner85

+0

WINCODEC_ERR_COMPONENTNOTFOUND는 이미지 디코딩을 시도 했으므로 적합한 코덱이 설치되어 있지 않음을 의미합니다. 어떤 Windows 버전을 테스트하고 있습니까? Windows 사진 뷰어에서 DDS 파일을 열 수 있습니까? – saucecontrol

+0

내 컴퓨터에서 (내 친구는 "Microsoft Windows 7 Home Premium, 64 비트, 버전 6.1.7601"을 사용하여 컴퓨터에서 내 게임을 테스트했습니다. – Endgegner85

답변

0

DDS 파일의 WIC- 코덱에는 여러 가지 중요한 제한 사항이 있습니다. 첫째, Windows 8.1 이상에만 포함됩니다. 둘째, BC1/BC2/BC3 (a.k.a. DXT1-DXT5) 형식 만 지원합니다. MSDN

일반적으로 특수화 된 DDS 텍스처 로더를 사용하는 것이 좋습니다.

+0

Compressonator라는 도구로 모든 텍스처를 * .png에서 변환했습니다. * .dds BC3.이 변경 후 텍스처를로드 할 때 95 %의 속도 향상을 얻었습니다. 모델 텍스처에 DDS-Importer를 작성했지만이 방법을 UI 텍스처에 사용했습니다. 로더를 추천 할 수 있습니까? – Endgegner85

관련 문제