ID3DX10ThreadPump 介面

用來以非同步方式執行工作,並使用 D3DX10CreateThreadPump建立。 有數個 D3DX10 API 可以選擇性地採用執行緒幫浦作為參數,例如 D3DX10CreateTextureFromFileD3DX10CompileFromFile (請參閱完整清單的備註) 。 如果執行緒幫浦傳遞至這些 API,它們將會以非同步方式在個別的執行緒幫浦執行緒上執行。 這樣做的優點是,它可以讓載入和處理大量資料,而不會在畫面上看到效能變慢。

成員

ID3DX10ThreadPump介面繼承自IUnknown介面。 ID3DX10ThreadPump 也有下列類型的成員:

方法

ID3DX10ThreadPump介面具有這些方法。

方法 描述
AddWorkItem 將工作專案新增至執行緒幫浦。
GetQueueStatus 取得執行緒幫浦內三個佇列中的專案數。
GetWorkItemCount 取得執行緒幫浦中目前的工作專案數目。
ProcessDeviceWorkItems 在工作專案完成載入和處理之後,將工作專案設定為裝置。 當執行緒幫浦完成載入和處理資源或著色器時,它會將它保留在佇列中,直到呼叫此 API 為止,此時處理的專案會設定為裝置。 這適用于控制每個畫面將資源系結至裝置所花費的處理量。 請參閱<備註>。
PurgeAllItems 清除執行緒幫浦中的所有工作專案。
WaitForAllItems 等候執行緒幫浦中的所有工作專案完成。

 

備註

執行緒幫浦會在 3 個步驟進程中載入和處理資料。 其會是:

  1. 使用資料載入器載入和解壓縮資料。 資料載入器物件有三種方法,執行緒幫浦會在載入和解壓縮資料時于內部呼叫: ID3DX10DataLoader::LoadID3DX10DataLoader::D ecompressID3DX10DataLoader::D estroy。 這三個 API 的特定功能會根據所載入和解壓縮的資料類型而有所不同。 如果資料載入器介面是以自己的自訂格式定義,也可以繼承資料載入器介面,而且其 API 可以變更。
  2. 使用資料處理者處理資料。 資料處理者物件有三種方法,執行緒幫浦會在處理資料時于內部呼叫: ID3DX10DataProcessor::P rocessID3DX10DataProcessor::CreateDeviceObjectID3DX10DataProcessor::D estroy。 處理資料的方式會根據資料類型而有所不同。 例如,如果資料是儲存為 JPEG 的紋理,則 ID3DX10DataProcessor::P rocess 會執行 JPEG 解壓縮以取得影像的原始影像位。 如果資料是著色器,則 ID3DX10DataProcessor::P rocess 會將 HLSL 編譯成位元組程式碼。 處理資料之後,將會為該資料建立裝置物件, (ID3DX10DataProcessor::CreateDeviceObject) ,並將物件新增至裝置物件的佇列。 如果資料處理者介面是以自己的自訂格式定義,也可以繼承資料處理者介面,而且其 API 可以變更。
  3. 將裝置物件系結至裝置。 當應用程式呼叫 ID3DX10ThreadPump::P rocessDeviceWorkItems時,這會將裝置物件佇列中的指定物件數目系結至裝置時完成。

執行緒幫浦可用來以下列兩種方式之一載入資料:呼叫採用執行緒幫浦作為參數的 API,例如 D3DX10CreateTextureFromFileD3DX10CompileFromFile,或呼叫 ID3DX10ThreadPump::AddWorkItem。 在採用執行緒幫浦的 API 案例中,會在內部建立資料載入器和資料處理者。 在 AddWorkItem的情況下,必須先事先建立資料載入器和資料處理者,然後傳遞至 AddWorkItem。 D3DX10 提供一組 API 來建立資料載入器和資料處理者,這些 API 具有載入和處理一般資料格式的功能, (請參閱,以取得 API) 的完整清單。 針對自訂資料格式,必須繼承資料載入器和資料處理者介面,而且必須重新定義其方法。

執行緒幫浦物件佔用大量資源,因此通常每個應用程式只能建立一個資源。

內建 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 介面