Condividi tramite


Interfaccia ID3DX11ThreadPump

Nota

La libreria di utilità D3DX (D3DX 9, D3DX 10 e D3DX 11) è deprecata per Windows 8 e non è supportata per le app di Windows Store.

Un thread pump esegue le attività in modo asincrono. Viene creato chiamando D3DX11CreateThreadPump. Esistono diverse API che accettano una pompa di thread facoltativa come parametro, ad esempio D3DX11CreateTextureFromFile e D3DX11CompileFromFile; se si passa un'interfaccia thread pump in queste API, le funzioni verranno eseguite in modo asincrono in un thread separato. In particolare nei computer multiprocessore, una pompa di thread può caricare le risorse ed elaborare i dati senza una notevole diminuzione delle prestazioni.

Membri

L'interfaccia ID3DX11ThreadPump eredita dall'interfaccia IUnknown . ID3DX11ThreadPump include anche questi tipi di membri:

Metodi

L'interfaccia ID3DX11ThreadPump include questi metodi.

Metodo Descrizione
AddWorkItem Nota: La libreria di utilità D3DX (D3DX 9, D3DX 10 e D3DX 11) è deprecata per Windows 8 e non è supportata per le app di Windows Store.
Aggiunge un elemento di lavoro alla pompa del thread.
GetQueueStatus Nota: La libreria di utilità D3DX (D3DX 9, D3DX 10 e D3DX 11) è deprecata per Windows 8 e non è supportata per le app di Windows Store.
Ottiene il numero di elementi in ognuna delle tre code all'interno della pompa del thread.
GetWorkItemCount Nota: La libreria di utilità D3DX (D3DX 9, D3DX 10 e D3DX 11) è deprecata per Windows 8 e non è supportata per le app di Windows Store.
Ottiene il numero di elementi di lavoro nella pompa del thread.
ProcessDeviceWorkItems Nota: La libreria di utilità D3DX (D3DX 9, D3DX 10 e D3DX 11) è deprecata per Windows 8 e non è supportata per le app di Windows Store.
Imposta gli elementi di lavoro sul dispositivo al termine del caricamento e dell'elaborazione.
PurgeAllItems Nota: La libreria di utilità D3DX (D3DX 9, D3DX 10 e D3DX 11) è deprecata per Windows 8 e non è supportata per le app di Windows Store.
Cancella tutti gli elementi di lavoro dalla pompa del thread.
WaitForAllItems Nota: La libreria di utilità D3DX (D3DX 9, D3DX 10 e D3DX 11) è deprecata per Windows 8 e non è supportata per le app di Windows Store.
Attende il completamento di tutti gli elementi di lavoro nella pompa del thread.

Commenti

Uso di una pompa di thread

Il thread pump carica ed elabora i dati usando il processo in tre passaggi seguente:

  1. Caricare e decomprimere i dati con un caricatore di dati. L'oggetto caricatore dati dispone di tre metodi che la pompa del thread chiamerà internamente durante il caricamento e la decompressione dei dati: ID3DX11DataLoader::Load, ID3DX11DataLoader::D ecompress e ID3DX11DataLoader::D estroy. La funzionalità specifica di queste tre API varia a seconda del tipo di dati da caricare e decomprimere. L'interfaccia del caricatore di dati può anche essere ereditata e le relative API possono essere modificate se ne carica un file di dati definito in un formato personalizzato.
  2. Elaborare i dati con un responsabile del trattamento dei dati. L'oggetto responsabile del trattamento dei dati ha tre metodi che il thread pump chiamerà internamente perché elabora i dati: ID3DX11DataProcessor::P rocess, ID3DX11DataProcessor::CreateDeviceObject e ID3DX11DataProcessor::D estroy. Il modo in cui elabora i dati sarà diverso a seconda del tipo di dati. Ad esempio, se i dati sono una trama archiviata come JPEG, ID3DX11DataProcessor::P rocess eseguirà la decompressione JPEG per ottenere i bit di immagine non elaborati dell'immagine. Se i dati sono uno shader, ID3DX11DataProcessor::P rocess compilerà HLSL in bytecode. Dopo l'elaborazione dei dati, verrà creato un oggetto dispositivo per tali dati (con ID3DX11DataProcessor::CreateDeviceObject) e l'oggetto verrà aggiunto a una coda di oggetti dispositivo. L'interfaccia del processore di dati può anche essere ereditata e le relative API possono essere modificate se ne elabora un file di dati definito in un formato personalizzato.
  3. Associare l'oggetto dispositivo al dispositivo. Questa operazione viene eseguita quando l'applicazione chiama ID3DX11ThreadPump::P rocessDeviceWorkItems, che associa un numero specificato di oggetti nella coda di oggetti dispositivo al dispositivo.

Il thread pump può essere usato per caricare i dati in uno dei due modi seguenti: chiamando un'API che accetta una pompa di thread come parametro, ad esempio D3DX11CreateTextureFromFile e D3DX11CompileFromFile o chiamando ID3DX11ThreadPump::AddWorkItem. Nel caso delle API che accettano una pompa di thread, il caricatore dati e il responsabile del trattamento dei dati vengono creati internamente. Nel caso di AddWorkItem, il caricatore di dati e il responsabile del trattamento dei dati devono essere creati in anticipo e quindi passati in AddWorkItem. D3DX11 offre un set di API per la creazione di caricatori di dati e responsabili del trattamento dei dati con funzionalità per il caricamento e l'elaborazione di formati di dati comuni. Per i formati di dati personalizzati, il caricatore di dati e le interfacce del responsabile del trattamento dei dati devono essere ereditati e i relativi metodi devono essere ridefiniti.

L'oggetto thread pump occupa una notevole quantità di risorse, quindi in genere deve essere creato un solo oggetto per applicazione.

Requisiti

Requisito Valore
Client minimo supportato
Windows 7 [solo app desktop]
Server minimo supportato
Windows Server 2008 R2 [solo app desktop]
Intestazione
D3DX11core.h
Libreria
D3DX11.lib

Vedi anche

Interfacce D3DX