ID3DX11ThreadPump 接口

注意

D3DX (D3DX 9、D3DX 10 和 D3DX 11) 实用工具库已弃用,不适用于 Windows 应用商店应用。

线程泵以异步方式执行任务。 它是通过调用 D3DX11CreateThreadPump 创建的。 有几个 API 采用可选的线程泵作为参数,例如 D3DX11CreateTextureFromFileD3DX11CompileFromFile;如果将线程泵接口传递到这些 API 中,函数将在单独的线程上异步执行。 特别是在多处理器计算机上,线程泵可以加载资源和处理数据,而不会明显降低性能。

成员

ID3DX11ThreadPump 接口继承自 IUnknown 接口。 ID3DX11ThreadPump 还具有以下类型的成员:

方法

ID3DX11ThreadPump 接口包含以下方法。

方法 说明
AddWorkItem 注意: D3DX (D3DX 9、D3DX 10 和 D3DX 11) 实用工具库已弃用,不适用于 Windows 应用商店应用。
将工作项添加到线程泵。
GetQueueStatus 注意: D3DX (D3DX 9、D3DX 10 和 D3DX 11) 实用工具库已弃用,不适用于 Windows 应用商店应用。
获取线程泵内三个队列中每个队列中的项数。
GetWorkItemCount 注意: D3DX (D3DX 9、D3DX 10 和 D3DX 11) 实用工具库已弃用,不适用于 Windows 应用商店应用。
获取线程泵中的工作项数。
ProcessDeviceWorkItems 注意: D3DX (D3DX 9、D3DX 10 和 D3DX 11) 实用工具库已弃用,不适用于 Windows 应用商店应用。
在完成加载和处理后,将工作项设置为设备。
PurgeAllItems 注意: D3DX (D3DX 9、D3DX 10 和 D3DX 11) 实用工具库已弃用,不适用于 Windows 应用商店应用。
清除线程泵中的所有工作项。
WaitForAllItems 注意: D3DX (D3DX 9、D3DX 10 和 D3DX 11) 实用工具库已弃用,不适用于 Windows 应用商店应用。
等待线程泵中的所有工作项完成。

注解

使用线程泵

线程泵使用以下三步过程加载和处理数据:

  1. 使用数据加载程序加载和解压缩 数据。 数据加载程序对象具有线程泵在加载和解压缩数据时将在内部调用的三种方法: ID3DX11DataLoader::LoadID3DX11DataLoader::D ecompressID3DX11DataLoader::D estroy。 这三个 API 的特定功能因加载和解压缩的数据类型而异。 数据加载程序接口也可以继承,如果加载以自己的自定义格式定义的数据文件,则可以更改其 API。
  2. 使用 数据处理者处理数据。 数据处理者对象具有线程泵在处理数据时将在内部调用的三种方法: ID3DX11DataProcessor::P rocessID3DX11DataProcessor::CreateDeviceObjectID3DX11DataProcessor::D estroy。 处理数据的方式因数据类型而异。 例如,如果数据是存储为 JPEG 的纹理,则 ID3DX11DataProcessor::P rocess 将执行 JPEG 解压缩以获取图像的原始图像位。 如果数据是着色器,则 ID3DX11DataProcessor::P rocess 会将 HLSL 编译为字节码。 处理数据后,将使用 ID3DX11DataProcessor::CreateDeviceObject) 为该数据 (创建设备对象,并将对象添加到设备对象队列中。 如果数据处理者正在处理以自己的自定义格式定义的数据文件,也可以继承数据处理者接口,并更改其 API。
  3. 将设备对象绑定到设备。 这在应用程序调用 ID3DX11ThreadPump::P rocessDeviceWorkItems 时完成,这将将设备对象队列中的指定数量的对象绑定到设备。

线程泵可用于通过以下两种方式之一加载数据:调用采用线程泵作为参数的 API,例如 D3DX11CreateTextureFromFileD3DX11CompileFromFile,或调用 ID3DX11ThreadPump::AddWorkItem。 对于采用线程泵的 API,数据加载器和数据处理者是在内部创建的。 对于 AddWorkItem,必须事先创建数据加载器和数据处理者,然后将其传递到 AddWorkItem 中。 D3DX11 提供了一组 API,用于创建具有加载和处理常见数据格式功能的数据加载器和数据处理者。 对于自定义数据格式,必须继承数据加载器和数据处理者接口,并且必须重新定义其方法。

线程泵对象占用大量资源,因此通常每个应用程序只应创建一个资源。

要求

要求
最低受支持的客户端
Windows 7 [仅限桌面应用]
最低受支持的服务器
Windows Server 2008 R2 [仅限桌面应用]
标头
D3DX11core.h

D3DX11.lib

请参阅

D3DX 接口