Как использовать Диспетчер устройств Direct3D?

Я хочу использовать одно устройство Direct3D совместно с несколькими потоками и объектами в моем приложении Direct3D. Я наткнулся на диспетчер устройств Direct3D, который выглядит так, как я хочу, хотя я не занимаюсь никакой обработкой видео или ускорением видео : http://msdn.microsoft.com/en-us/library/windows/desktop/aa965267(. v=vs.85 ).aspx

В моем коде я делаю следующее:

  // Create the device manager
  UINT resetToken = 0;
  IDirect3DDeviceManager9* deviceManager = NULL;
  if (FAILED(DXVA2CreateDirect3DDeviceManager9(&resetToken, &deviceManager)))
    return false;

  // Add the device to the device manager
  if (FAILED(deviceManager->ResetDevice(device, resetToken)))
    return false;

  deviceManager->AddRef();

У меня вопрос: после того, как я создал диспетчер устройств Direct3D, как мне поделиться диспетчером устройств Direct3D с другими объектами, не передавая указатель на диспетчер устройств? Microsoft специально сказала сделать следующее, но я понятия не имею, что на самом деле подразумевается под следующим:

The device owner must provide a way for other objects to get a pointer to the IDirect3DDeviceManager9 interface. The standard mechanism is to implement the IMFGetService interface. The service GUID is MR_VIDEO_ACCELERATION_SERVICE.

Может ли кто-нибудь показать мне, как поделиться диспетчером устройств с помощью интерфейса IMFGetService?

6
задан Christian 21 June 2012 в 21:38
поделиться