ID3DX10ThreadPump インターフェイス

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

メンバー

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

メソッド

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

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

解説

スレッドポンプは、3段階のプロセスでデータの読み込みと処理を行います。 次のようになります。

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

スレッドポンプは、次の2つの方法のいずれかでデータを読み込むために使用できます。 D3DX10CreateTextureFromFileD3DX10CompileFromFileなどのパラメーターとしてスレッドポンプを受け取る API を呼び出すか、 ID3DX10ThreadPump:: addworkitemを呼び出します。 スレッドを取得する 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 インターフェイス