ID3DX11ThreadPump インターフェイス

注意

D3DX (D3DX 9、D3DX 10、D3DX 11) ユーティリティ ライブラリは Windows 8 では非推奨となり、Windows ストア アプリではサポートされていません。

スレッド ポンプはタスクを非同期的に実行します。 D3DX11CreateThreadPump を呼び出すことによって作成されます。 D3DX11CreateTextureFromFile や D3DX11CompileFromFile など、省略可能なスレッド ポンプをパラメーターとして受け取る API がいくつかあります。これらの API にスレッド ポンプ インターフェイスを渡すと、関数は別のスレッドで非同期的に実行されます。 特にマルチプロセッサ マシンでは、スレッド ポンプによってリソースを読み込み、パフォーマンスが著しく低下することなくデータを処理できます。

メンバー

ID3DX11ThreadPump インターフェイスは、IUnknown インターフェイスから継承されます。 ID3DX11ThreadPump には、次の種類のメンバーもあります。

メソッド

ID3DX11ThreadPump インターフェイスには、これらのメソッドがあります。

メソッド 説明
AddWorkItem メモ: D3DX (D3DX 9、D3DX 10、D3DX 11) ユーティリティ ライブラリは Windows 8 では非推奨となり、Windows ストア アプリではサポートされていません。
スレッド ポンプに作業項目を追加します。
GetQueueStatus メモ: D3DX (D3DX 9、D3DX 10、D3DX 11) ユーティリティ ライブラリは Windows 8 では非推奨となり、Windows ストア アプリではサポートされていません。
スレッド ポンプ内の 3 つのキューのそれぞれに含まれる項目の数を取得します。
GetWorkItemCount メモ: D3DX (D3DX 9、D3DX 10、D3DX 11) ユーティリティ ライブラリは Windows 8 では非推奨となり、Windows ストア アプリではサポートされていません。
スレッド ポンプ内の作業項目の数を取得します。
ProcessDeviceWorkItems メモ: D3DX (D3DX 9、D3DX 10、D3DX 11) ユーティリティ ライブラリは Windows 8 では非推奨となり、Windows ストア アプリではサポートされていません。
読み込みと処理が完了した後、作業項目をデバイスに設定します。
PurgeAllItems メモ: D3DX (D3DX 9、D3DX 10、D3DX 11) ユーティリティ ライブラリは Windows 8 では非推奨となり、Windows ストア アプリではサポートされていません。
スレッド ポンプからすべての作業項目をクリアします。
WaitForAllItems メモ: D3DX (D3DX 9、D3DX 10、D3DX 11) ユーティリティ ライブラリは Windows 8 では非推奨となり、Windows ストア アプリではサポートされていません。
スレッド ポンプ内のすべての作業項目が完了するまで待機します。

注釈

スレッド ポンプの使用

スレッド ポンプは、次の 3 つの手順でデータを読み込んで処理します。

  1. データ ローダーを使用してデータを読み込み、圧縮解除します。 データ ローダー オブジェクトには、スレッド ポンプがデータの読み込みと圧縮解除時に内部で呼び出す 3 つのメソッド ( ID3DX11DataLoader::LoadID3DX11DataLoader::D ecompressID3DX11DataLoader::D estroy) があります。 これら 3 つの API の特定の機能は、読み込まれるデータの種類と圧縮解除されるデータの種類によって異なります。 データ ローダー インターフェイスは継承することもでき、独自のカスタム形式で定義されたデータ ファイルを読み込む場合は、その API を変更できます。
  2. データ プロセッサを使用してデータを処理します。 データ プロセッサ オブジェクトには、スレッド ポンプがデータの処理中に内部的に呼び出す 3 つのメソッド ( ID3DX11DataProcessor::P rocessID3DX11DataProcessor::CreateDeviceObjectID3DX11DataProcessor::D estroy) があります。 データの処理方法は、データの種類によって異なります。 たとえば、データが JPEG として格納されているテクスチャの場合、 ID3DX11DataProcessor::P rocess は JPEG 圧縮解除を実行して、画像の生画像ビットを取得します。 データがシェーダーの場合、 ID3DX11DataProcessor::P rocess は HLSL をバイトコードにコンパイルします。 データが処理されると、そのデータに対して ( ID3DX11DataProcessor::CreateDeviceObject を使用して) デバイス オブジェクトが作成され、そのオブジェクトがデバイス オブジェクトのキューに追加されます。 データ プロセッサ インターフェイスは継承することもでき、独自のカスタム形式で定義されたデータ ファイルを処理している場合は、その API を変更できます。
  3. デバイス オブジェクトをデバイスにバインドします。 これは、アプリケーションが ID3DX11ThreadPump::P rocessDeviceWorkItems を呼び出したときに行われます。これにより、デバイス オブジェクトのキュー内の指定された数のオブジェクトがデバイスにバインドされます。

スレッド ポンプを使用すると、D3DX11CreateTextureFromFile や D3DX11CompileFromFile などのパラメーターとしてスレッド ポンプを受け取る API を呼び出すか、ID3DX11ThreadPump::AddWorkItem を呼び出すことによって、データを読み込むことができます。 スレッド ポンプを受け取る API の場合、データ ローダーとデータ プロセッサは内部的に作成されます。 AddWorkItem の場合は、データ ローダーとデータ プロセッサを事前に作成してから、AddWorkItem に渡す必要があります。 D3DX11 には、一般的なデータ形式を読み込んで処理する機能を備えたデータ ローダーとデータ プロセッサを作成するための API のセットが用意されています。 カスタム データ形式の場合、データ ローダーとデータ プロセッサ インターフェイスを継承し、そのメソッドを再定義する必要があります。

スレッド ポンプ オブジェクトは大量のリソースを占めるので、通常はアプリケーションごとに 1 つだけ作成する必要があります。

要件

要件
サポートされている最小のクライアント
Windows 7 [デスクトップ アプリのみ]
サポートされている最小のサーバー
Windows Server 2008 R2 [デスクトップ アプリのみ]
Header
D3DX11core.h
ライブラリ
D3DX11.lib

関連項目

D3DX インターフェイス