Interface ID3DX10ThreadPump

Utilisé pour exécuter des tâches de façon asynchrone et créé avec D3DX10CreateThreadPump. Plusieurs API D3DX10 peuvent éventuellement prendre une pompe de thread en tant que paramètre, comme D3DX10CreateTextureFromFile et D3DX10CompileFromFile (consultez la section Notes pour obtenir la liste complète). Si la pompe de threads est transmise à ces API, elles s’exécutent de façon asynchrone sur un thread de pompage de thread distinct. L’avantage de cette opération est qu’elle peut faire en sorte que le chargement et le traitement de grandes quantités de données se produisent sans voir un ralentissement des performances à l’écran.

Membres

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

Méthodes

L’interface ID3DX10ThreadPump possède ces méthodes.

Méthode Description
AddWorkItem Ajoutez un élément de travail à la pompe de thread.
GetQueueStatus Obtient le nombre d’éléments dans chacune des trois files d’attente à l’intérieur de la pompe de thread.
GetWorkItemCount Obtient le nombre d’éléments de travail actuellement dans la pompe de thread.
ProcessDeviceWorkItems Définissez les éléments de travail sur l’appareil une fois qu’ils ont terminé le chargement et le traitement. Lorsque la pompe de thread a terminé le chargement et le traitement d’une ressource ou d’un nuanceur, elle le contiendra dans une file d’attente jusqu’à ce que cette API soit appelée, auquel cas les éléments traités seront définis sur l’appareil. Cela est utile pour contrôler la quantité de traitement consacrée à la liaison de ressources à l’appareil pour chaque trame. Consultez la section Remarques.
PurgeAllItems Effacez tous les éléments de travail de la pompe de thread.
WaitForAllItems Attendez la fin de l’exécution de tous les éléments de travail de la pompe de thread.

Notes

La pompe de thread charge et traite les données dans un processus en 3 étapes. Il va :

  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 lors du chargement et de la décompression des données : ID3DX10DataLoader :: Load, ID3DX10DataLoader ::D eComPresset ID3DX10DataLoader ::D estroy. La fonctionnalité spécifique de ces trois API diffère selon le type de données chargées et décompressées. L’interface de chargeur de données peut également être héritée et ses API peuvent être modifiées si l’une d’elles est en cours de chargement d’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 de traitement de données a trois méthodes que la pompe de thread appellera en interne lors du traitement des données : ID3DX10DataProcessor ::P tionnaire, ID3DX10DataProcessor :: CreateDeviceObjectet ID3DX10DataProcessor ::D estroy. La façon dont il traite les données est différente selon le type de données. Par exemple, si les données sont une texture stockée en tant que JPEG, ID3DX10DataProcessor ::P tionnaire effectue la décompression JPEG pour obtenir les bits d’image RAW de l’image. Si les données sont un nuanceur, ID3DX10DataProcessor ::P tionnaire compile le langage HLSL en bytecode. Une fois les données traitées, un objet périphérique sera créé pour ces données (avec ID3DX10DataProcessor :: CreateDeviceObject) et l’objet sera ajouté à une file d’attente d’objets périphériques. L’interface du processeur de données peut également être héritée et ses API peuvent être modifiées si l’une d’elles est en cours de traitement d’un fichier de données défini dans son propre format personnalisé.
  3. Liez l’objet appareil à l’appareil. Cette opération est effectuée quand une application appelle ID3DX10ThreadPump ::P rocessdeviceworkitems, 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 deux manières : en appelant une API qui prend une pompe de thread comme paramètre, tel que D3DX10CreateTextureFromFile et D3DX10CompileFromFile, ou en appelant ID3DX10ThreadPump :: 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 de AddWorkItem, le chargeur de données et le processeur de données doivent être créés au préalable et sont ensuite passés à AddWorkItem. D3DX10 fournit un ensemble d’API permettant de créer des chargeurs de données et des processeurs de données qui ont des fonctionnalités de chargement et de traitement des formats de données courants (consultez la section Notes pour obtenir la liste complète des API). 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 thread Pump occupe une quantité importante de ressources. en général, un seul doit être créé par application.

Chargeurs de données D3DX10 intégrés

Description
D3DX10CreateAsyncFileLoader Créez un chargeur de fichier de façon asynchrone.
D3DX10CreateAsyncMemoryLoader Créez un chargeur de données de façon asynchrone.
D3DX10CreateAsyncResourceLoader Créez un chargeur de ressource de manière asynchrone.

Processeurs de données D3DX10 intégrés

Description
D3DX10CreateAsyncTextureProcessor Créez un processeur de données à utiliser avec une pompe de thread. Cette API est similaire à D3DX10CreateAsyncTextureInfoProcessor, mais elle charge également la texture.
D3DX10CreateAsyncTextureInfoProcessor Créez un processeur de données à utiliser avec une pompe de thread.
D3DX10CreateAsyncShaderCompilerProcessor Compilez un nuanceur et créez un processeur de données de façon asynchrone.
D3DX10CreateAsyncEffectCompilerProcessor Créer un effet avec un processeur de données de façon asynchrone.
D3DX10CreateAsyncEffectCreateProcessor Créer un pool d’effets de manière asynchrone.
D3DX10CreateAsyncEffectPoolCreateProcessor Créer un processeur de données de façon asynchrone.
D3DX10CreateAsyncShaderPreprocessProcessor Créer un processeur de données pour un nuanceur de manière asynchrone.

API qui prennent une pompe de thread comme paramètre.

Description
D3DX10CompileFromFile Compilez un nuanceur à partir d’un fichier.
D3DX10CompileFromMemory Compilez un nuanceur résidant en mémoire.
D3DX10CompileFromResource Compilez un nuanceur à partir d’une ressource.
D3DX10CreateEffectFromFile Créer un effet à partir d’un fichier.
D3DX10CreateEffectFromMemory Créez un effet à partir de la mémoire.
D3DX10CreateEffectFromResource Créer un effet à partir d’une ressource.
D3DX10CreateEffectPoolFromFile Créer un pool d’effets à partir d’un fichier.
D3DX10CreateEffectPoolFromMemory Créer un pool d’effets à partir d’un fichier résidant en mémoire.
D3DX10CreateEffectPoolFromResource Créer un pool d’effets à partir d’une ressource.
D3DX10PreprocessShaderFromFile Créer un nuanceur à partir d’un fichier sans le compiler.
D3DX10PreprocessShaderFromMemory Créer un nuanceur à partir de la mémoire sans le compiler.
D3DX10PreprocessShaderFromResource Créez un nuanceur à partir d’une ressource sans le compiler.
D3DX10CreateShaderResourceViewFromFile Créer un affichage des ressources de nuanceur à partir d’un fichier.
D3DX10CreateShaderResourceViewFromMemory Créer un affichage des ressources de nuanceur à partir d’un fichier en mémoire.
D3DX10CreateShaderResourceViewFromResource Créer un affichage des ressources de nuanceur à partir d’une ressource.
D3DX10GetImageInfoFromFile Récupère des informations sur un fichier image donné.
D3DX10GetImageInfoFromMemory Obtenir des informations sur une image déjà chargée en mémoire.
D3DX10GetImageInfoFromResource Récupère des informations sur une image donnée dans une ressource.
D3DX10CreateTextureFromFile Créer une ressource de texture à partir d’un fichier.
D3DX10CreateTextureFromMemory Créer une ressource de texture à partir d’un fichier résidant dans la mémoire système.
D3DX10CreateTextureFromResource Créer une ressource de texture à partir d’une autre ressource.

Spécifications

Condition requise Valeur
En-tête
D3DX10. h
Bibliothèque
D3DX10. lib

Voir aussi

Interfaces D3DX