Interface ID3DX11ThreadPump

Notes

La bibliothèque d’utilitaires D3DX (D3DX 9, D3DX 10 et D3DX 11) est déconseillée pour Windows 8 et n’est pas prise en charge pour les applications du Windows Store.

Une pompe à thread exécute des tâches de façon asynchrone. Il est créé en appelant D3DX11CreateThreadPump. Il existe plusieurs API qui prennent une pompe de thread facultative en tant que paramètre, par exemple D3DX11CreateTextureFromFile et D3DX11CompileFromFile ; Si vous passez une interface de pompe de threads dans ces API, les fonctions s’exécutent de manière asynchrone sur un thread distinct. En particulier sur les machines multiprocesseurs, une pompe de thread peut charger des ressources et traiter des données sans une baisse notable des performances.

Membres

L’interface ID3DX11ThreadPump hérite de l’interface IUnknown. ID3DX11ThreadPump a également les types de membres suivants :

Méthodes

L’interface ID3DX11ThreadPump a ces méthodes.

Méthode Description
AddWorkItem Note: La bibliothèque d’utilitaires D3DX (D3DX 9, D3DX 10 et D3DX 11) est déconseillée pour Windows 8 et n’est pas prise en charge pour les applications du Windows Store.
Ajoute un élément de travail à la pompe de thread.
GetQueueStatus Note: La bibliothèque d’utilitaires D3DX (D3DX 9, D3DX 10 et D3DX 11) est déconseillée pour Windows 8 et n’est pas prise en charge pour les applications du Windows Store.
Obtient le nombre d’éléments dans chacune des trois files d’attente à l’intérieur de la pompe de thread.
GetWorkItemCount Note: La bibliothèque d’utilitaires D3DX (D3DX 9, D3DX 10 et D3DX 11) est déconseillée pour Windows 8 et n’est pas prise en charge pour les applications du Windows Store.
Obtient le nombre d’éléments de travail dans la pompe de threads.
ProcessDeviceWorkItems Note: La bibliothèque d’utilitaires D3DX (D3DX 9, D3DX 10 et D3DX 11) est déconseillée pour Windows 8 et n’est pas prise en charge pour les applications du Windows Store.
Définit les éléments de travail sur l’appareil une fois qu’ils ont terminé leur chargement et leur traitement.
PurgeAllItems Note: La bibliothèque d’utilitaires D3DX (D3DX 9, D3DX 10 et D3DX 11) est déconseillée pour Windows 8 et n’est pas prise en charge pour les applications du Windows Store.
Efface tous les éléments de travail de la pompe de thread.
WaitForAllItems Note: La bibliothèque d’utilitaires D3DX (D3DX 9, D3DX 10 et D3DX 11) est déconseillée pour Windows 8 et n’est pas prise en charge pour les applications du Windows Store.
Attend que tous les éléments de travail de la pompe de thread se terminent.

Notes

Utilisation d’une pompe de threads

La pompe de thread charge et traite les données à l’aide du processus en trois étapes suivant :

  1. Chargez et décompressez les données avec un chargeur de données. L’objet chargeur de données a trois méthodes que la pompe de thread appellera en interne pendant le chargement et la décompression des données : ID3DX11DataLoader::Load, ID3DX11DataLoader::D ecompress et ID3DX11DataLoader::D estroy. Les fonctionnalités spécifiques de ces trois API diffèrent selon le type de données chargées et décompressées. L’interface du chargeur de données peut également être héritée et ses API peuvent être modifiées si l’on charge un fichier de données défini dans son propre format personnalisé.
  2. Traitez les données avec un processeur de données. L’objet processeur de données a trois méthodes que la pompe de thread appellera en interne pendant le traitement des données : ID3DX11DataProcessor::P rocess, ID3DX11DataProcessor::CreateDeviceObject et ID3DX11DataProcessor::D estroy. La façon dont il traite les données est différente en fonction du type de données. Par exemple, si les données sont une texture stockée au format JPEG, ID3DX11DataProcessor::P rocess effectue la décompression JPEG pour obtenir les bits d’image bruts de l’image. Si les données sont un nuanceur, ID3DX11DataProcessor::P rocess compile le HLSL en bytecode. Une fois les données traitées, un objet d’appareil est créé pour ces données (avec ID3DX11DataProcessor::CreateDeviceObject) et l’objet est ajouté à une file d’attente d’objets d’appareil. L’interface du processeur de données peut également être héritée et ses API peuvent être modifiées si l’on traite un fichier de données défini dans son propre format personnalisé.
  3. Liez l’objet d’appareil à l’appareil. Cette opération est effectuée lorsque l’application appelle ID3DX11ThreadPump::P rocessDeviceWorkItems, ce qui lie un nombre spécifié d’objets dans la file d’attente d’objets d’appareil à l’appareil.

La pompe de threads peut être utilisée pour charger des données de l’une des deux façons suivantes : en appelant une API qui prend une pompe de threads en tant que paramètre, par exemple D3DX11CreateTextureFromFile et D3DX11CompileFromFile, ou en appelant ID3DX11ThreadPump::AddWorkItem. Dans le cas des API qui prennent une pompe de thread, le chargeur de données et le processeur de données sont créés en interne. Dans le cas d’AddWorkItem, le chargeur de données et le processeur de données doivent être créés au préalable, puis transmis à AddWorkItem. D3DX11 fournit un ensemble d’API permettant de créer des chargeurs de données et des processeurs de données qui disposent de fonctionnalités de chargement et de traitement des formats de données courants. Pour les formats de données personnalisés, les interfaces du chargeur de données et du processeur de données doivent être héritées et leurs méthodes doivent être redéfinies.

L’objet de pompe de threads occupe une quantité importante de ressources. Par conséquent, une seule doit généralement être créée par application.

Configuration requise

Condition requise Valeur
Client minimal pris en charge
Windows 7 [applications de bureau uniquement]
Serveur minimal pris en charge
Windows Server 2008 R2 [applications de bureau uniquement]
En-tête
D3DX11core.h
Bibliothèque
D3DX11.lib

Voir aussi

D3DX Interfaces