ID3DX10ThreadPump 介面
用來以非同步方式執行工作,並使用 D3DX10CreateThreadPump建立。 有數個 D3DX10 API 可以選擇性地採用執行緒幫浦作為參數,例如 D3DX10CreateTextureFromFile 和 D3DX10CompileFromFile (請參閱完整清單的備註) 。 如果執行緒幫浦傳遞至這些 API,它們將會以非同步方式在個別的執行緒幫浦執行緒上執行。 這樣做的優點是,它可以讓載入和處理大量資料,而不會在畫面上看到效能變慢。
成員
ID3DX10ThreadPump介面繼承自IUnknown介面。 ID3DX10ThreadPump 也有下列類型的成員:
方法
ID3DX10ThreadPump介面具有這些方法。
方法 | 描述 |
---|---|
AddWorkItem | 將工作專案新增至執行緒幫浦。 |
GetQueueStatus | 取得執行緒幫浦內三個佇列中的專案數。 |
GetWorkItemCount | 取得執行緒幫浦中目前的工作專案數目。 |
ProcessDeviceWorkItems | 在工作專案完成載入和處理之後,將工作專案設定為裝置。 當執行緒幫浦完成載入和處理資源或著色器時,它會將它保留在佇列中,直到呼叫此 API 為止,此時處理的專案會設定為裝置。 這適用于控制每個畫面將資源系結至裝置所花費的處理量。 請參閱<備註>。 |
PurgeAllItems | 清除執行緒幫浦中的所有工作專案。 |
WaitForAllItems | 等候執行緒幫浦中的所有工作專案完成。 |
備註
執行緒幫浦會在 3 個步驟進程中載入和處理資料。 其會是:
- 使用資料載入器載入和解壓縮資料。 資料載入器物件有三種方法,執行緒幫浦會在載入和解壓縮資料時于內部呼叫: ID3DX10DataLoader::Load、 ID3DX10DataLoader::D ecompress和 ID3DX10DataLoader::D estroy。 這三個 API 的特定功能會根據所載入和解壓縮的資料類型而有所不同。 如果資料載入器介面是以自己的自訂格式定義,也可以繼承資料載入器介面,而且其 API 可以變更。
- 使用資料處理者處理資料。 資料處理者物件有三種方法,執行緒幫浦會在處理資料時于內部呼叫: ID3DX10DataProcessor::P rocess、 ID3DX10DataProcessor::CreateDeviceObject和 ID3DX10DataProcessor::D estroy。 處理資料的方式會根據資料類型而有所不同。 例如,如果資料是儲存為 JPEG 的紋理,則 ID3DX10DataProcessor::P rocess 會執行 JPEG 解壓縮以取得影像的原始影像位。 如果資料是著色器,則 ID3DX10DataProcessor::P rocess 會將 HLSL 編譯成位元組程式碼。 處理資料之後,將會為該資料建立裝置物件, (ID3DX10DataProcessor::CreateDeviceObject) ,並將物件新增至裝置物件的佇列。 如果資料處理者介面是以自己的自訂格式定義,也可以繼承資料處理者介面,而且其 API 可以變更。
- 將裝置物件系結至裝置。 當應用程式呼叫 ID3DX10ThreadPump::P rocessDeviceWorkItems時,這會將裝置物件佇列中的指定物件數目系結至裝置時完成。
執行緒幫浦可用來以下列兩種方式之一載入資料:呼叫採用執行緒幫浦作為參數的 API,例如 D3DX10CreateTextureFromFile 和 D3DX10CompileFromFile,或呼叫 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 | 從另一個資源建立紋理資源。 |
規格需求
需求 | 值 |
---|---|
標頭 |
|
程式庫 |
|
另請參閱