次の方法で共有


ID3DX10ThreadPump インターフェイス

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

スレッド ポンプは、3 つのステップから成るプロセスでデータの読み込みと処理を行います。動作は次のとおりです。

  1. データ ローダーを使用して、データの読み込みと解凍を行います。データ ローダー オブジェクトには 3 つのメソッドがあり、スレッド ポンプはデータの読み込みおよび解凍時にこれらのメソッドを内部で呼び出します。ID3DX10DataLoader::Load, ID3DX10DataLoader::Decompress, and ID3DX10DataLoader::Destroy.この 3 つの API の機能は、読み込みおよび解凍が行われるデータの種類によって異なります。また、データ ローダー インターフェイスを継承でき、API のいずれかが独自のカスタム フォーマットで定義されたデータ ファイルを読み込む場合にその API を変更することができます。
  2. データ プロセッサを使用して、データを処理します。データ プロセッサ オブジェクトには 3 つのメソッドがあり、スレッド ポンプはデータの処理時にこれらのメソッドを内部で呼び出します。ID3DX10DataProcessor::Process, ID3DX10DataProcessor::CreateDeviceObject, and ID3DX10DataProcessor::Destroy.データの処理方法は、データの種類によって異なります。たとえば、データが JPEG として保存されているテクスチャーの場合、ID3DX10DataProcessor::Process は JPEG 解凍を実行してイメージの Raw イメージ ビットを取得します。データがシェーダーの場合、ID3DX10DataProcessor::Process は HLSL をバイトコードにコンパイルします。データが処理されたら、(ID3DX10DataProcessor::CreateDeviceObject を使用して) そのデータについてデバイス オブジェクトが作成され、このオブジェクトがデバイス オブジェクトのキューに追加されます。また、データ プロセッサ インターフェイスを継承でき、API のいずれかが独自のカスタム フォーマットで定義されたデータ ファイルを処理する場合にその API を変更することができます。
  3. デバイス オブジェクトをデバイスにバインドします。これは、アプリケーションが ID3DX10ThreadPump::ProcessDeviceWorkItems を呼び出したときに実行されます。デバイス オブジェクトのキュー内の指定された数のオブジェクトがデバイスにバインドされます。

スレッド ポンプを使用して、次の 2 つの方法のいずれかでデータを読み込むことができます。D3DX10CreateTextureFromFileD3DX10CompileFromFile など、スレッド ポンプをパラメーターとして受け取る API を呼び出す方法と、ID3DX10ThreadPump::AddWorkItem を呼び出す方法です。スレッド ポンプを受け取る API の場合、データ ローダーとデータ プロセッサは内部で作成されます。AddWorkItem の場合は、データ ローダーとデータ プロセッサを事前に作成しておく必要があり、その後で AddWorkItem に渡されます。D3DX10 には、共通のデータ フォーマットの読み込みおよび処理を行うための機能を持つデータ ローダーとデータ プロセッサを作成する API のセットが用意されています (API の一覧については、「解説」を参照してください)。カスタム データ フォーマットの場合は、データ ローダーとデータ プロセッサのインターフェイスを継承し、それらのメソッドを再定義する必要があります。

スレッド ポンプ オブジェクトはかなりの量のリソースを必要とするため、通常は、アプリケーションごとに 1 つだけ作成してください。

ID3DX10ThreadPump のメンバー

メソッド 説明
ID3DX10ThreadPump::AddWorkItem 作業項目をスレッド ポンプに追加します。
ID3DX10ThreadPump::GetQueueStatus スレッド ポンプ内の 3 つのキューそれぞれに入っている項目の数を取得します。
ID3DX10ThreadPump::GetWorkItemCount 現在、スレッド ポンプ内にある作業項目の数を取得します。
ID3DX10ThreadPump::ProcessDeviceWorkItems 作業項目が読み込みと処理を終了した後、作業項目をデバイスに設定します。
ID3DX10ThreadPump::PurgeAllItems すべての作業項目をスレッド ポンプからクリアします。
ID3DX10ThreadPump::WaitForAllItems スレッド ポンプ内のすべての作業項目が終了するまで待機します。

解説 

ビルトイン 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 別のリソースからテクスチャー リソースを作成します。

関連項目

D3DX インターフェイス