2010-07-07 4 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); 

Но я получаю эту ошибку

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

я не могу, кажется, чтобы выяснить, что пошло не так, как tex.ComPointer может не является правильным указателем для OpenSharedResource или Texture2D не поддерживается (не указано, что его нет в документации)

Другой альтернативный вариант, указав, что pHandle, передаваемый в функцию CreateTexture, недоступен в SlimDX или I Не знаю об этом ,

Неужели кто-нибудь пробовал это успешно? Некоторая помощь была бы признательна.

Thanks

ответ

4

Я нашел проблему с моим кодом. Мне нужно использовать DXGI для получения общего дескриптора (не указателя). Код полностью работает

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

Texture2D tex2 = device.OpenSharedResource<Texture2D>(r.SharedHandle);