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 osservazioni per l'elenco completo). Se la pompa del thread viene passata in queste API, verranno eseguite in modo asincrono su un thread di pompa di thread separato. Il vantaggio di eseguire questa operazione è che può eseguire il caricamento e l'elaborazione di grandi quantità di dati senza visualizzare un rallentamento 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 dopo aver completato il caricamento e l'elaborazione. Al termine del caricamento e dell'elaborazione di una risorsa o di uno shader, la pompa del thread verrà inserita in una coda fino a quando questa API non viene chiamata, a quel punto gli elementi elaborati verranno impostati sul dispositivo. Ciò è utile per controllare la quantità di elaborazione spesa per l'associazione delle risorse al dispositivo per ogni frame. Vedere la sezione Osservazioni.
PurgeAllItems Cancellare tutti gli elementi di lavoro dalla pompa del thread.
WaitForAllItems Attendere il completamento di tutti gli elementi di lavoro nella pompa del thread.

 

Commenti

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

  1. Caricare e decomprimere i dati con un caricatore dati. L'oggetto del caricatore dati include tre metodi che la pompa del thread chiamerà internamente perché sta caricando e decompressendo i dati: ID3DX10DataLoader::Load, ID3DX10DataLoader::D ecompress e ID3DX10DataLoader::D estroy. Le funzionalità specifiche di queste tre API differiscono a seconda del tipo di dati da caricare e decompressi. L'interfaccia del caricatore dati può anche essere ereditata e le relative API possono essere modificate se si carica un file di dati definito in un formato personalizzato.
  2. Elaborare i dati con un responsabile del trattamento dei dati. L'oggetto elaborazione dati include tre metodi che la pompa del thread 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 compilano 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 responsabile del trattamento dei dati può anche essere ereditata e le relative API possono essere modificate se si elabora un file di dati definito in un formato personalizzato.
  3. Associare l'oggetto dispositivo al dispositivo. Questa operazione viene eseguita quando un'applicazione chiama ID3DX10ThreadPump::P rocessDeviceWorkItems, che associa un numero specificato di oggetti nella coda di oggetti dispositivo al dispositivo.

La pompa del thread può essere usata per caricare i dati in uno dei due modi: 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 dei dati e il responsabile dei dati vengono creati internamente. Nel caso di AddWorkItem, il caricatore dei dati e il responsabile 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 osservazioni per l'elenco completo delle API). Per i formati di dati personalizzati, è necessario ereditare le interfacce del caricatore dati e del trattamento dei dati e i relativi metodi devono essere ridefiniti.

L'oggetto pompa del thread richiede una notevole quantità di risorse, quindi in genere deve essere creato solo uno per applicazione.

Caricatori di dati D3DX10 predefiniti

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

 

Processori dati D3DX10 predefiniti

Descrizione
D3DX10CreateAsyncTextureProcessor Creare un responsabile dei dati da usare con una pompa di thread. Questa API è simile a D3DX10CreateAsyncTextureInfoProcessor ma carica anche la trama.
D3DX10CreateAsyncTextureInfoProcessor Creare un responsabile dei dati da usare con una pompa di thread.
D3DX10CreateAsyncShaderCompilerProcessor Compilare uno shader e creare un responsabile 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.
D3DX10CreateAsyncShaderPreprocessor Creare un responsabile dei dati per uno shader in modo asincrono.

 

API che accettano una pompa di thread come parametro.

Descrizione
D3DX10CompileFromFile Compilare uno shader da un file.
D3DX10CompileFromMemory Compilare un 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