2014-06-11 15 views
2

SlimDX를 사용하여 13046 개의 서로 다른 DataRectangles로 구성된 텍스처를 만듭니다. 여기 내 코드가있다. "E_INVALIDARG : 잘못된 매개 변수가 반환 함수 (-2147024809)로 전달되었습니다."와 함께 Texture2D 생성자가 중단되었습니다. inParms는 Panel에 대한 핸들을 포함하는 구조체입니다.SlimDX DataRectangle 배열의 Texture2D

public Renderer(Parameters inParms, ref DataRectangle[] inShapes) 
    { 
     Texture2DDescription description = new Texture2DDescription() 
     { 
      Width = 500, 
      Height = 500, 
      MipLevels = 1, 
      ArraySize = inShapes.Length, 
      Format = Format.R32G32B32_Float, 
      SampleDescription = new SampleDescription(1, 0), 
      Usage = ResourceUsage.Default, 
      BindFlags = BindFlags.RenderTarget | BindFlags.ShaderResource, 
      CpuAccessFlags = CpuAccessFlags.None, 
      OptionFlags = ResourceOptionFlags.None 
     }; 

     SwapChainDescription chainDescription = new SwapChainDescription() 
     { 
      BufferCount = 1, 
      IsWindowed = true, 
      Usage = Usage.RenderTargetOutput, 
      ModeDescription = new ModeDescription(0, 0, new Rational(60, 1), Format.R8G8B8A8_UNorm), 
      SampleDescription = new SampleDescription(1, 0), 
      Flags = SwapChainFlags.None, 
      OutputHandle = inParms.Handle, 
      SwapEffect = SwapEffect.Discard 
     }; 

     Device.CreateWithSwapChain(DriverType.Hardware, DeviceCreationFlags.None, chainDescription, out mDevice, out mSwapChain); 

     Texture2D texture = new Texture2D(Device, description, inShapes); 
} 

답변

1

렌더링 대상 사용에는 R32G32B32_Float (거의 모든 3 채널 형식)이 지원되지 않습니다.

  • 사용 R32G32B32A32_Float 대신 (당신이 여분의 채널을 추가로 데이터 사각형을 변경해야한다는 것을 의미) :

    그래서 당신은 다른 옵션이 있습니다.

  • BindFlags.RenderTarget 플래그를 제거하십시오. 이 자원을 읽기만 원하면이 플래그는 필요하지 않습니다. 초기 데이터를 제공함에 따라 사용량을 ResourceUsage로 변경할 수도 있습니다. 변경도 가능합니다. [형식이 특정 리소스 사용을 위해 지원되는 경우 또한

, 당신은 다음 코드 사용할 수 있습니다, 확인 :

public bool IsFormatSupported(Device dev, FormatSupport usage, Format format) 
    { 
     FormatSupport support = dev.CheckFormatSupport(format); 
     return (support | usage) == support; 
    } 
+0

감사합니다,하지만 난 텍스처 개체에 직접 단지 그리기 프리미티브를했다. 하지만 다음 호를 통해 나를 도울 수 있습니다. http://stackoverflow.com/questions/24212019/trying-to-render-a-texture-on-windows-forms-panels – KairisCharm