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:
- 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.
- 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.
- 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 |
|
Libreria |
|
Vedi anche