Interfaz ID3DX10ThreadPump

Se usa para ejecutar tareas de forma asincrónica y creadas con D3DX10CreateThreadPump. Hay varias API D3DX10 que, opcionalmente, pueden tomar una bomba de subprocesos como parámetro, como D3DX10CreateTextureFromFile y D3DX10CompileFromFile (vea los comentarios para obtener una lista completa). Si la bomba de subprocesos se pasa a estas API, se ejecutarán de forma asincrónica en un subproceso de bomba de subproceso independiente. La ventaja de hacerlo es que puede hacer que la carga y el procesamiento de grandes cantidades de datos se produzcan sin ver una ralentización apreciable en el rendimiento en la pantalla.

Miembros

La interfaz ID3DX10ThreadPump hereda de la interfaz IUnknown . ID3DX10ThreadPump también tiene estos tipos de miembros:

Métodos

La interfaz ID3DX10ThreadPump tiene estos métodos.

Método Descripción
AddWorkItem Agregue un elemento de trabajo a la bomba de subprocesos.
GetQueueStatus Obtenga el número de elementos de cada una de las tres colas dentro de la bomba de subprocesos.
GetWorkItemCount Obtenga el número de elementos de trabajo que se encuentran actualmente en la bomba de subprocesos.
ProcessDeviceWorkItems Establezca los elementos de trabajo en el dispositivo una vez que hayan terminado de cargarse y procesarse. Cuando la bomba de subprocesos haya terminado de cargar y procesar un recurso o sombreador, la contendrá en una cola hasta que se llame a esta API, momento en el que los elementos procesados se establecerán en el dispositivo. Esto es útil para controlar la cantidad de procesamiento que se invierte en enlazar recursos al dispositivo para cada fotograma. Vea Notas.
PurgeAllItems Borre todos los elementos de trabajo de la bomba de subprocesos.
WaitForAllItems Espere a que finalicen todos los elementos de trabajo de la bomba de subprocesos.

 

Observaciones

La bomba de subprocesos carga y procesa los datos en un proceso de 3 pasos. Va:

  1. Cargue y descomprima los datos con un cargador de datos. El objeto de cargador de datos tiene tres métodos a los que la bomba de subprocesos llamará internamente, ya que está cargando y descomprimiendo los datos: ID3DX10DataLoader::Load, ID3DX10DataLoader::D ecompress y ID3DX10DataLoader::D estroy. La funcionalidad específica de estas tres API difiere en función del tipo de datos que se cargan y descomprimen. La interfaz del cargador de datos también se puede heredar y se pueden cambiar sus API si se carga un archivo de datos definido en el propio formato personalizado.
  2. Procesar los datos con un procesador de datos. El objeto de procesador de datos tiene tres métodos que la bomba de subprocesos llamará internamente a medida que procesa los datos: ID3DX10DataProcessor::P rocess, ID3DX10DataProcessor::CreateDeviceObject y ID3DX10DataProcessor::D estroy. La forma en que procesa los datos será diferente en función del tipo de datos. Por ejemplo, si los datos son una textura almacenada como JPEG, ID3DX10DataProcessor::P rocess realizará la descompresión JPEG para obtener los bits de imagen sin procesar de la imagen. Si los datos son un sombreador, ID3DX10DataProcessor::P rocess compilará el HLSL en código de bytes. Una vez procesados los datos, se creará un objeto de dispositivo para esos datos (con ID3DX10DataProcessor::CreateDeviceObject) y el objeto se agregará a una cola de objetos de dispositivo. La interfaz del procesador de datos también se puede heredar y se pueden cambiar sus API si se está procesando un archivo de datos definido en el propio formato personalizado.
  3. Enlace el objeto de dispositivo al dispositivo. Esto se hace cuando la aplicación llama a ID3DX10ThreadPump::P rocessDeviceWorkItems, que enlazará un número especificado de objetos en la cola de objetos de dispositivo al dispositivo.

La bomba de subprocesos se puede usar para cargar datos de una de estas dos maneras: llamando a una API que toma una bomba de subprocesos como parámetro, como D3DX10CreateTextureFromFile y D3DX10CompileFromFile, o llamando a ID3DX10ThreadPump::AddWorkItem. En el caso de las API que toman una bomba de subprocesos, el cargador de datos y el procesador de datos se crean internamente. En el caso de AddWorkItem, el cargador de datos y el procesador de datos se deben crear de antemano y, a continuación, se pasan a AddWorkItem. D3DX10 proporciona un conjunto de API para crear cargadores de datos y procesadores de datos que tienen funcionalidad para cargar y procesar formatos de datos comunes (consulte los comentarios para obtener una lista completa de las API). En el caso de los formatos de datos personalizados, se deben heredar el cargador de datos y las interfaces del procesador de datos y sus métodos deben volver a definirse.

El objeto de bomba de subprocesos ocupa una cantidad considerable de recursos, por lo que generalmente solo se debe crear uno por aplicación.

Cargadores de datos D3DX10 integrados

Descripción
D3DX10CreateAsyncFileLoader Cree un cargador de archivos de forma asincrónica.
D3DX10CreateAsyncMemoryLoader Cree un cargador de datos de forma asincrónica.
D3DX10CreateAsyncResourceLoader Cree un cargador de recursos de forma asincrónica.

 

Procesadores de datos D3DX10 integrados

Descripción
D3DX10CreateAsyncTextureProcessor Cree un procesador de datos que se usará con una bomba de subproceso. Esta API es similar a D3DX10CreateAsyncTextureInfoProcessor, pero también carga la textura.
D3DX10CreateAsyncTextureInfoProcessor Cree un procesador de datos que se usará con una bomba de subproceso.
D3DX10CreateAsyncShaderCompilerProcessor Compile un sombreador y cree un procesador de datos de forma asincrónica.
D3DX10CreateAsyncEffectCompilerProcessor Cree un efecto con un procesador de datos de forma asincrónica.
D3DX10CreateAsyncEffectCreateProcessor Cree un grupo de efectos de forma asincrónica.
D3DX10CreateAsyncEffectPoolCreateProcessor Cree un procesador de datos de forma asincrónica.
D3DX10CreateAsyncShaderPreprocessProcessor Cree un procesador de datos para un sombreador de forma asincrónica.

 

API que toman una bomba de subprocesos como parámetro.

Descripción
D3DX10CompileFromFile Compile un sombreador a partir de un archivo.
D3DX10CompileFromMemory Compile un sombreador que resida en la memoria.
D3DX10CompileFromResource Compile un sombreador a partir de un recurso.
D3DX10CreateEffectFromFile Cree un efecto a partir de un archivo.
D3DX10CreateEffectFromMemory Cree un efecto a partir de la memoria.
D3DX10CreateEffectFromResource Cree un efecto a partir de un recurso.
D3DX10CreateEffectPoolFromFile Cree un grupo de efectos a partir de un archivo.
D3DX10CreateEffectPoolFromMemory Cree un grupo de efectos a partir de un archivo que resida en la memoria.
D3DX10CreateEffectPoolFromResource Cree un grupo de efectos a partir de un recurso.
D3DX10PreprocessShaderFromFile Cree un sombreador a partir de un archivo sin compilarlo.
D3DX10PreprocessShaderFromMemory Cree un sombreador a partir de la memoria sin compilarlo.
D3DX10PreprocessShaderFromResource Cree un sombreador a partir de un recurso sin compilarlo.
D3DX10CreateShaderResourceViewFromFile Cree una vista de recursos de sombreador a partir de un archivo.
D3DX10CreateShaderResourceViewFromMemory Cree una vista de recursos de sombreador a partir de un archivo en memoria.
D3DX10CreateShaderResourceViewFromResource Cree una vista de recursos de sombreador a partir de un recurso.
D3DX10GetImageInfoFromFile Recupera información sobre un archivo de imagen determinado.
D3DX10GetImageInfoFromMemory Obtenga información sobre una imagen ya cargada en la memoria.
D3DX10GetImageInfoFromResource Recupera información sobre una imagen determinada en un recurso.
D3DX10CreateTextureFromFile Cree un recurso de textura a partir de un archivo.
D3DX10CreateTextureFromMemory Cree un recurso de textura a partir de un archivo que resida en la memoria del sistema.
D3DX10CreateTextureFromResource Cree un recurso de textura a partir de otro recurso.

 

Requisitos

Requisito Value
Encabezado
D3DX10.h
Biblioteca
D3DX10.lib

Vea también

D3DX Interfaces