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 つの手順でデータを読み込んで処理します。
- データ ローダーを使用してデータを読み込み、圧縮解除します。 データ ローダー オブジェクトには、スレッド ポンプがデータの読み込みと圧縮解除時に内部で呼び出す 3 つのメソッド ( ID3DX11DataLoader::Load、 ID3DX11DataLoader::D ecompress、 ID3DX11DataLoader::D estroy) があります。 これら 3 つの API の特定の機能は、読み込まれるデータの種類と圧縮解除されるデータの種類によって異なります。 データ ローダー インターフェイスは継承することもでき、独自のカスタム形式で定義されたデータ ファイルを読み込む場合は、その API を変更できます。
- データ プロセッサを使用してデータを処理します。 データ プロセッサ オブジェクトには、スレッド ポンプがデータの処理中に内部的に呼び出す 3 つのメソッド ( ID3DX11DataProcessor::P rocess、 ID3DX11DataProcessor::CreateDeviceObject、 ID3DX11DataProcessor::D estroy) があります。 データの処理方法は、データの種類によって異なります。 たとえば、データが JPEG として格納されているテクスチャの場合、 ID3DX11DataProcessor::P rocess は JPEG 圧縮解除を実行して、画像の生画像ビットを取得します。 データがシェーダーの場合、 ID3DX11DataProcessor::P rocess は HLSL をバイトコードにコンパイルします。 データが処理されると、そのデータに対して ( ID3DX11DataProcessor::CreateDeviceObject を使用して) デバイス オブジェクトが作成され、そのオブジェクトがデバイス オブジェクトのキューに追加されます。 データ プロセッサ インターフェイスは継承することもでき、独自のカスタム形式で定義されたデータ ファイルを処理している場合は、その API を変更できます。
- デバイス オブジェクトをデバイスにバインドします。 これは、アプリケーションが ID3DX11ThreadPump::P rocessDeviceWorkItems を呼び出したときに行われます。これにより、デバイス オブジェクトのキュー内の指定された数のオブジェクトがデバイスにバインドされます。
スレッド ポンプを使用すると、D3DX11CreateTextureFromFile や D3DX11CompileFromFile などのパラメーターとしてスレッド ポンプを受け取る API を呼び出すか、ID3DX11ThreadPump::AddWorkItem を呼び出すことによって、データを読み込むことができます。 スレッド ポンプを受け取る API の場合、データ ローダーとデータ プロセッサは内部的に作成されます。 AddWorkItem の場合は、データ ローダーとデータ プロセッサを事前に作成してから、AddWorkItem に渡す必要があります。 D3DX11 には、一般的なデータ形式を読み込んで処理する機能を備えたデータ ローダーとデータ プロセッサを作成するための API のセットが用意されています。 カスタム データ形式の場合、データ ローダーとデータ プロセッサ インターフェイスを継承し、そのメソッドを再定義する必要があります。
スレッド ポンプ オブジェクトは大量のリソースを占めるので、通常はアプリケーションごとに 1 つだけ作成する必要があります。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント |
Windows 7 [デスクトップ アプリのみ] |
サポートされている最小のサーバー |
Windows Server 2008 R2 [デスクトップ アプリのみ] |
Header |
|
ライブラリ |
|