小编Chr*_*ian的帖子

如何使用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();
Run Code Online (Sandbox Code Playgroud)

我的问题是,一旦我创建了Direct3D设备管理器,如何在不传递指向设备管理器的指针的情况下与其他对象共享direct3d设备管理器?微软已经明确表示会做以下事情,但我不知道以下内容的真正含义:

设备所有者必须为其他对象提供一种获取指向IDirect3DDeviceManager9接口的指针的方法.标准机制是实现IMFGetService接口.服务GUID是MR_VIDEO_ACCELERATION_SERVICE.

有人可以告诉我如何使用IMFGetService接口共享设备管理器吗?

c++ direct3d direct3d9 dxva ms-media-foundation

6
推荐指数
1
解决办法
1792
查看次数

标签 统计

c++ ×1

direct3d ×1

direct3d9 ×1

dxva ×1

ms-media-foundation ×1