2010-07-07 3 views
1

내 프로젝트 중 하나에 필요했던 DX10의 공유 리소스 기능을 시험하고 있습니다. 하지만 SlimDX를 사용하여 샘플이나 코드를 많이 찾을 수 없습니다. DX10 문서에 따르면, 리소스를 Shared로 지정하면 다른 응용 프로그램의 OpenSharedResource()를 사용하여 열 수 있습니다. SlimDX에서 간단한 테스트 응용 프로그램과 함께, 나는 다음과 같은SlimDX에서 DX10을 사용하는 공유 리소스

 Texture2D tex = new Texture2D(device, new Texture2DDescription() 
     { 
      ArraySize = 1, 
      BindFlags = BindFlags.RenderTarget | BindFlags.ShaderResource, 
      CpuAccessFlags = CpuAccessFlags.None, 
      Format = Format.B8G8R8A8_UNorm, 
      Height = 128, 
      Width = 128, 
      MipLevels = 1, 
      OptionFlags = ResourceOptionFlags.Shared, 
      SampleDescription = new SampleDescription(1, 0), 
      Usage = ResourceUsage.Default, 
     }); 

     Texture2D tex2 = device.OpenSharedResource<Texture2D>(tex.ComPointer); 

했다 그러나 나는 수있는 tex.ComPointer,이 오류가 나는 무엇이 잘못되었는지 파악하는 것 같다 수 없습니다

E_INVALIDARG: An invalid parameter was passed to the returning function (-2147024809) 

가 계속 OpenSharedResource에 대한 올바른 포인터가 아니거나 Texture2D가 지원되지 않음 (문서에 명확히 언급되지 않음)

CreateTexture 함수에 전달할 pHandle을 지정하는 다른 방법은 SlimDX 또는 I에서 사용할 수 없습니다. 그것을 모르고있어. .

성공적으로 시도한 사람이 있습니까? 도움이된다면 도움이 될 것입니다.

감사합니다.

답변

4

내 코드에 문제가 있음을 확인했습니다. DXGI를 사용하여 공유 핸들 (포인터가 아님)을 검색해야합니다. 따르는 코드는 완벽하게 작동합니다.

SlimDX.DXGI.Resource r = new Resource(tex); 

Texture2D tex2 = device.OpenSharedResource<Texture2D>(r.SharedHandle); 
관련 문제