Interfaccia ID3DX10ThreadPump

Usato per eseguire attività in modo asincrono e creato con D3DX10CreateThreadPump. Esistono diverse API D3DX10 che possono facoltativamente accettare una pompa di thread come parametro, ad esempio D3DX10CreateTextureFromFile e D3DX10CompileFromFile (vedere le note per l'elenco completo). Se il thread pump viene passato in queste API, queste verranno eseguite in modo asincrono in un thread di pompa di thread separato. Il vantaggio di eseguire questa operazione è che è possibile eseguire il caricamento e l'elaborazione di grandi quantità di dati senza visualizzare un rallentamento notabile delle prestazioni sullo schermo.

Membri

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

Metodi

L'interfaccia ID3DX10ThreadPump include questi metodi.

Metodo Descrizione
AddWorkItem Aggiungere un elemento di lavoro alla pompa del thread.
GetQueueStatus Ottenere il numero di elementi in ognuna delle tre code all'interno della pompa del thread.
GetWorkItemCount Ottenere il numero di elementi di lavoro attualmente presenti nella pompa del thread.
ProcessDeviceWorkItems Impostare gli elementi di lavoro sul dispositivo al termine del caricamento e dell'elaborazione. Al termine del caricamento e dell'elaborazione di una risorsa o di uno shader, la pompa di thread verrà inserita in una coda finché non viene chiamata questa API, a quel punto gli elementi elaborati verranno impostati sul dispositivo. Ciò è utile per controllare la quantità di elaborazione impiegato per l'associazione delle risorse al dispositivo per ogni frame. Vedere la sezione Osservazioni.
PurgeAllItems Cancellare tutti gli elementi di lavoro dalla pompa di thread.
WaitForAllItems Attendere il completamento di tutti gli elementi di lavoro nella pompa del thread.

 

Commenti

La pompa di thread carica ed elabora i dati in un processo in 3 passaggi. Va:

  1. Caricare e decomprimere i dati con un caricatore di dati. L'oggetto caricatore di dati dispone di tre metodi che il thread pump chiamerà internamente durante il caricamento e la decompressione dei dati: ID3DX10DataLoader::Load, ID3DX10DataLoader::D ecompress e ID3DX10DataLoader::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 dispone di tre metodi che il thread pump chiamerà internamente perché elabora i dati: ID3DX10DataProcessor::P rocess, ID3DX10DataProcessor::CreateDeviceObject e ID3DX10DataProcessor::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, ID3DX10DataProcessor::P rocess eseguirà la decompressione JPEG per ottenere i bit di immagine non elaborati dell'immagine. Se i dati sono uno shader, ID3DX10DataProcessor::P rocess compilerà HLSL in bytecode. Dopo l'elaborazione dei dati, verrà creato un oggetto dispositivo per tali dati (con ID3DX10DataProcessor::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 ID3DX10ThreadPump::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 D3DX10CreateTextureFromFile e D3DX10CompileFromFile o chiamando ID3DX10ThreadPump::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. D3DX10 fornisce 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 (vedere le note per l'elenco completo delle API). 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.

Caricatori di dati D3DX10 predefiniti

Descrizione
D3DX10CreateAsyncFileLoader Creare un caricatore di file in modo asincrono.
D3DX10CreateAsyncMemoryLoader Creare un caricatore di dati in modo asincrono.
D3DX10CreateAsyncResourceLoader Creare un caricatore di risorse in modo asincrono.

 

Processori di dati D3DX10 predefiniti

Descrizione
D3DX10CreateAsyncTextureProcessor Creare un responsabile del trattamento dei dati da usare con una pompa di thread. Questa API è simile a D3DX10CreateAsyncTextureInfoProcessor, ma carica anche la trama.
D3DX10CreateAsyncTextureInfoProcessor Creare un responsabile del trattamento dei dati da usare con una pompa di thread.
D3DX10CreateAsyncShaderCompilerProcessor Compilare uno shader e creare un responsabile del trattamento dei dati in modo asincrono.
D3DX10CreateAsyncEffectCompilerProcessor Creare un effetto con un responsabile del trattamento dei dati in modo asincrono.
D3DX10CreateAsyncEffectCreateProcessor Creare un pool di effetti in modo asincrono.
D3DX10CreateAsyncEffectPoolCreateProcessor Creare un responsabile del trattamento dei dati in modo asincrono.
D3DX10CreateAsyncShaderPreprocessProcessor Creare un responsabile del trattamento dei dati per uno shader in modo asincrono.

 

API che accettano un thread pump come parametro.

Descrizione
D3DX10CompileFromFile Compilare uno shader da un file.
D3DX10CompileFromMemory Compilare uno shader che risiede in memoria.
D3DX10CompileFromResource Compilare uno shader da una risorsa.
D3DX10CreateEffectFromFile Creare un effetto da un file.
D3DX10CreateEffectFromMemory Creare un effetto dalla memoria.
D3DX10CreateEffectFromResource Creare un effetto da una risorsa.
D3DX10CreateEffectPoolFromFile Creare un pool di effetti da un file.
D3DX10CreateEffectPoolFromMemory Creare un pool di effetti da un file che risiede in memoria.
D3DX10CreateEffectPoolFromResource Creare un pool di effetti da una risorsa.
D3DX10PreprocessShaderFromFile Creare uno shader da un file senza compilarlo.
D3DX10PreprocessShaderFromMemory Creare uno shader dalla memoria senza compilarlo.
D3DX10PreprocessShaderFromResource Creare uno shader da una risorsa senza compilarla.
D3DX10CreateShaderResourceViewFromFile Creare una visualizzazione shader-resource da un file.
D3DX10CreateShaderResourceViewFromMemory Creare una visualizzazione shader-resource da un file in memoria.
D3DX10CreateShaderResourceViewFromResource Creare una visualizzazione shader-resource da una risorsa.
D3DX10GetImageInfoFromFile Recupera informazioni su un determinato file di immagine.
D3DX10GetImageInfoFromMemory Ottenere informazioni su un'immagine già caricata in memoria.
D3DX10GetImageInfoFromResource Recupera informazioni su un'immagine specificata in una risorsa.
D3DX10CreateTextureFromFile Creare una risorsa trama da un file.
D3DX10CreateTextureFromMemory Creare una risorsa trama da un file che risiede nella memoria del sistema.
D3DX10CreateTextureFromResource Creare una risorsa trama da un'altra risorsa.

 

Requisiti

Requisito Valore
Intestazione
D3DX10.h
Libreria
D3DX10.lib

Vedi anche

Interfacce D3DX