ID3DX10ThreadPump インターフェイス

タスクを非同期的に実行し、 D3DX10CreateThreadPump を使用して作成するために使用されます。 D3DX10CreateTextureFromFile や D3DX10CompileFromFile など、必要に応じてスレッド ポンプをパラメーターとして受け取ることができる D3DX10 API がいくつかあります (完全な一覧については、「解説」を参照してください)。 スレッド ポンプがこれらの API に渡されると、別のスレッド ポンプ スレッドで非同期的に実行されます。 これを行う利点は、大量のデータの読み込みと処理を、画面上のパフォーマンスが低下する可能性が見られないようにできることです。

メンバー

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

メソッド

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

メソッド 説明
AddWorkItem 作業項目をスレッド ポンプに追加します。
GetQueueStatus スレッド ポンプ内の 3 つのキューのそれぞれに含まれる項目の数を取得します。
GetWorkItemCount スレッド ポンプ内の現在の作業項目の数を取得します。
ProcessDeviceWorkItems 作業項目は、読み込みと処理が完了した後にデバイスに設定します。 スレッド ポンプがリソースまたはシェーダーの読み込みと処理を完了すると、この API が呼び出されるまでキューに保持され、その時点で処理された項目がデバイスに設定されます。 これは、フレームごとにデバイスへのリソースのバインドに費やされる処理の量を制御するのに役立ちます。 「解説」を参照してください。
PurgeAllItems スレッド ポンプからすべての作業項目をクリアします。
WaitForAllItems スレッド ポンプ内のすべての作業項目が完了するまで待ちます。

 

注釈

スレッドポンプは、3段階のプロセスでデータを読み込んで処理します。 次のことが行われます。

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

スレッド ポンプを使用すると、D3DX10CreateTextureFromFile や D3DX10CompileFromFile などのパラメーターとしてスレッド ポンプを受け取る API を呼び出すか、ID3DX10ThreadPump::AddWorkItem を呼び出すことによって、2 つの方法のいずれかでデータを読み込むことができます。 スレッド ポンプを受け取る API の場合、データ ローダーとデータ プロセッサは内部的に作成されます。 AddWorkItem の場合は、データ ローダーとデータ プロセッサを事前に作成し、AddWorkItem に渡す必要があります。 D3DX10 には、一般的なデータ形式を読み込んで処理するための機能を備えたデータ ローダーとデータ プロセッサを作成するための一連の API が用意されています (API の完全な一覧については、「解説」を参照してください)。 カスタム データ形式の場合、データ ローダーとデータ プロセッサ インターフェイスを継承し、そのメソッドを再定義する必要があります。

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

組み込みの D3DX10 データ ローダー

説明
D3DX10CreateAsyncFileLoader ファイル ローダーを非同期的に作成します。
D3DX10CreateAsyncMemoryLoader データ ローダーを非同期的に作成します。
D3DX10CreateAsyncResourceLoader リソース ローダーを非同期的に作成します。

 

組み込みの D3DX10 データ プロセッサ

説明
D3DX10CreateAsyncTextureProcessor スレッド ポンプで使用するデータ プロセッサを作成します。 この API は D3DX10CreateAsyncTextureInfoProcessor に似ていますが、テクスチャも読み込まれます。
D3DX10CreateAsyncTextureInfoProcessor スレッド ポンプで使用するデータ プロセッサを作成します。
D3DX10CreateAsyncShaderCompilerProcessor シェーダーをコンパイルし、データ プロセッサを非同期的に作成します。
D3DX10CreateAsyncEffectCompilerProcessor データ プロセッサを使用して非同期的に効果を作成します。
D3DX10CreateAsyncEffectCreateProcessor 効果プールを非同期的に作成します。
D3DX10CreateAsyncEffectPoolCreateProcessor データ プロセッサを非同期的に作成します。
D3DX10CreateAsyncShaderPreprocessProcessor シェーダーのデータ プロセッサを非同期的に作成します。

 

スレッド ポンプをパラメーターとして受け取る API。

説明
D3DX10CompileFromFile ファイルからシェーダーをコンパイルします。
D3DX10CompileFromMemory メモリに存在するシェーダーをコンパイルします。
D3DX10CompileFromResource リソースからシェーダーをコンパイルします。
D3DX10CreateEffectFromFile ファイルから効果を作成します。
D3DX10CreateEffectFromMemory メモリから効果を作成します。
D3DX10CreateEffectFromResource リソースから効果を作成します。
D3DX10CreateEffectPoolFromFile ファイルからエフェクト プールを作成します。
D3DX10CreateEffectPoolFromMemory メモリに存在するファイルからエフェクト プールを作成します。
D3DX10CreateEffectPoolFromResource リソースから効果プールを作成します。
D3DX10PreprocessShaderFromFile コンパイルせずにファイルからシェーダーを作成します。
D3DX10PreprocessShaderFromMemory コンパイルせずにメモリからシェーダーを作成します。
D3DX10PreprocessShaderFromResource コンパイルせずにリソースからシェーダーを作成します。
D3DX10CreateShaderResourceViewFromFile ファイルからシェーダー リソース ビューを作成します。
D3DX10CreateShaderResourceViewFromMemory メモリ内のファイルからシェーダー リソース ビューを作成します。
D3DX10CreateShaderResourceViewFromResource リソースからシェーダー リソース ビューを作成します。
D3DX10GetImageInfoFromFile 特定のイメージ ファイルに関する情報を取得します。
D3DX10GetImageInfoFromMemory メモリに既に読み込まれているイメージに関する情報を取得します。
D3DX10GetImageInfoFromResource リソース内の特定のイメージに関する情報を取得します。
D3DX10CreateTextureFromFile ファイルからテクスチャ リソースを作成します。
D3DX10CreateTextureFromMemory システム メモリに存在するファイルからテクスチャ リソースを作成します。
D3DX10CreateTextureFromResource 別のリソースからテクスチャ リソースを作成します。

 

要件

要件
ヘッダー
D3DX10.h
ライブラリ
D3DX10.lib

こちらもご覧ください

D3DX インターフェイス