我是否需要CreateSharedHandle将ID3D11Texture2D传递给另一个线程?

时间:2018-05-30 10:59:50

标签: windows directx direct3d11 dxgi

正如标题所说:我是否需要使用CreateSharedHandle将线程中生成的ID3D11Texture2D传递给同一进程中的另一个线程

我的用例是每个线程都会使用纹理,并在同一个适配器上创建自己的设备。

1 个答案:

答案 0 :(得分:1)

引用Surface Sharing Between Windows Graphics APIs

  

同步共享表面支持Direct3D 10.1,Direct2D和Direct3D 11 API使用的多个呈现设备的多线程,进程内和进程外使用。   [...]

     

DXGI 1.1同步共享曲面

     

Direct3D 11,Direct3D 10.1和Direct2D API都使用DXGI 1.1,它提供了两个或多个Direct3D设备同步读取和写入同一视频内存表面(DXGISurface1)的功能。使用同步共享表面的渲染设备可以是Direct3D 10.1或Direct3D 11设备,每个设备在同一个流程或跨流程中运行

使用同步表面/纹理使您可以在多线程并发执行环境中使用它们。但是,您不必启用此机制只需在另一个线程上使用纹理。你必须出于另一个原因这样做:

  

...每个线程都会使用纹理,并在同一个适配器上创建自己的设备。

纹理属于他们的设备,因此您必须启用共享才能让多个设备使用共享纹理数据。