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:
- 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.
- 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.
- 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 |
|
Biblioteca |
|
Vea también