ID3DX10ThreadPump インターフェイス
タスクを非同期的に実行し、 D3DX10CreateThreadPump を使用して作成するために使用されます。 D3DX10CreateTextureFromFile や D3DX10CompileFromFile など、必要に応じてスレッド ポンプをパラメーターとして受け取ることができる D3DX10 API がいくつかあります (完全な一覧については、「解説」を参照してください)。 スレッド ポンプがこれらの API に渡されると、別のスレッド ポンプ スレッドで非同期的に実行されます。 これを行う利点は、大量のデータの読み込みと処理を、画面上のパフォーマンスが低下する可能性が見られないようにできることです。
メンバー
ID3DX10ThreadPump インターフェイスは、IUnknown インターフェイスから継承します。 ID3DX10ThreadPump には、次の種類のメンバーもあります。
メソッド
ID3DX10ThreadPump インターフェイスには、これらのメソッドがあります。
メソッド | 説明 |
---|---|
AddWorkItem | 作業項目をスレッド ポンプに追加します。 |
GetQueueStatus | スレッド ポンプ内の 3 つのキューのそれぞれに含まれる項目の数を取得します。 |
GetWorkItemCount | スレッド ポンプ内の現在の作業項目の数を取得します。 |
ProcessDeviceWorkItems | 作業項目は、読み込みと処理が完了した後にデバイスに設定します。 スレッド ポンプがリソースまたはシェーダーの読み込みと処理を完了すると、この API が呼び出されるまでキューに保持され、その時点で処理された項目がデバイスに設定されます。 これは、フレームごとにデバイスへのリソースのバインドに費やされる処理の量を制御するのに役立ちます。 「解説」を参照してください。 |
PurgeAllItems | スレッド ポンプからすべての作業項目をクリアします。 |
WaitForAllItems | スレッド ポンプ内のすべての作業項目が完了するまで待ちます。 |
注釈
スレッドポンプは、3段階のプロセスでデータを読み込んで処理します。 次のことが行われます。
- データ ローダーを使用してデータを読み込んで圧縮解除します。 データ ローダー オブジェクトには、スレッド ポンプがデータの読み込みと圧縮解除中に内部的に呼び出す 3 つのメソッド (ID3DX10DataLoader::Load、 ID3DX10DataLoader::D ecompress、 ID3DX10DataLoader::D estroy) があります。 これら 3 つの API の特定の機能は、読み込みおよび圧縮解除されるデータの種類によって異なります。 データ ローダー インターフェイスは継承することもでき、独自のカスタム形式で定義されたデータ ファイルを読み込む場合は、その API を変更できます。
- データ プロセッサを使用してデータを処理します。 データ プロセッサ オブジェクトには、スレッド ポンプがデータの処理中に内部的に呼び出す 3 つのメソッド ( ID3DX10DataProcessor::P rocess、 ID3DX10DataProcessor::CreateDeviceObject、 ID3DX10DataProcessor::D estroy) があります。 データの処理方法は、データの種類によって異なります。 たとえば、データが JPEG として格納されたテクスチャである場合、 ID3DX10DataProcessor::P rocess は JPEG 圧縮解除を実行して、イメージの生画像ビットを取得します。 データがシェーダーの場合、 ID3DX10DataProcessor::P rocess は HLSL をバイトコードにコンパイルします。 データが処理されると、そのデータに対して ( ID3DX10DataProcessor::CreateDeviceObject を使用して) デバイス オブジェクトが作成され、そのオブジェクトがデバイス オブジェクトのキューに追加されます。 データ プロセッサ インターフェイスも継承でき、独自のカスタム形式で定義されたデータ ファイルを処理している場合は、その API を変更できます。
- デバイス オブジェクトをデバイスにバインドします。 これは、アプリケーションが 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。
要件
要件 | 値 |
---|---|
ヘッダー |
|
ライブラリ |
|
こちらもご覧ください