2015-01-24 3 views
0

SlimDX를 사용하고 텍스처에서 메모리 스트림을 가져 오려고합니다. 오류 : E_FAIL : 알 수없는 오류가 발생했습니다 (-2147467259). 이것은 간단해야합니다, 맞죠?SlimDX Throw Texture2D.ToStream()을 시도 할 때 알 수없는 오류가 발생했습니다.

MemoryStream newMemStream = new MemoryStream(); 
SlimDX.Result sdxRes = SlimDX.Direct3D11.Texture2D.ToFile(
        _texture.Device.ImmediateContext, 
        _texture, 
        SlimDX.Direct3D11.ImageFileFormat.Bmp, 
        (Stream)newMemStream); 

사람이 내가 무엇을 말할 수 : 스트림을 얻을 수

Texture2DDescription textureDesc = new Texture2DDescription(); 
textureDesc.BindFlags = BindFlags.ShaderResource | 
         BindFlags.RenderTarget; 
textureDesc.Format = SlimDX.DXGI.Format.B8G8R8A8_UNorm; 
textureDesc.Width = _inputWidth; 
textureDesc.Height = _inputHeight; 
textureDesc.MipLevels = 1; 
textureDesc.ArraySize = 1; 
textureDesc.SampleDescription = new SlimDX.DXGI.SampleDescription(1, 0); 
textureDesc.Usage = ResourceUsage.Default; 
textureDesc.OptionFlags = ResourceOptionFlags.Shared; 
textureDesc.CpuAccessFlags = CpuAccessFlags.None; 
textureDesc.ArraySize = 1; 
_texture = new Texture2D(d3dDevice11, textureDesc); 

그리고 전화 :

`d3dDevice11 = new SlimDX.Direct3D11.Device(DriverType.Hardware, DeviceCreationFlags.Debug); 

그리고 내 텍스처 선언 : 여기

내 장치 선언이다 잘못하고있는거야?

덕분에, 더그

답변

0

은 Texture2D는 CPU에 사용할 수없는 밝혀졌습니다. CPU에서 볼 수있는 Texture2D를 만드는 것이 트릭을 만들었습니다.