Compartilhar via


Interface ID3DX10ThreadPump

Usado para executar tarefas de forma assíncrona e criado com D3DX10CreateThreadPump. Há várias APIs D3DX10 que, opcionalmente, podem usar uma bomba de thread como um parâmetro, como D3DX10CreateTextureFromFile e D3DX10CompileFromFile (consulte comentários para obter a lista completa). Se a bomba de thread for passada para essas APIs, elas serão executadas de forma assíncrona em um thread de bomba de thread separado. A vantagem de fazer isso é que ele pode fazer com que o carregamento e o processamento de grandes quantidades de dados ocorram sem ver uma lentidão no desempenho na tela.

Membros

A interface ID3DX10ThreadPump herda da interface IUnknown . ID3DX10ThreadPump também tem estes tipos de membros:

Métodos

A interface ID3DX10ThreadPump tem esses métodos.

Método Descrição
AddWorkItem Adicione um item de trabalho à bomba de thread.
GetQueueStatus Obtenha o número de itens em cada uma das três filas dentro da bomba de thread.
GetWorkItemCount Obtenha o número de itens de trabalho atualmente na bomba de thread.
ProcessDeviceWorkItems Defina itens de trabalho para o dispositivo depois que eles terminarem de carregar e processar. Quando a bomba de thread terminar de carregar e processar um recurso ou sombreador, ela o manterá em uma fila até que essa API seja chamada, momento em que os itens processados serão definidos para o dispositivo. Isso é útil para controlar a quantidade de processamento gasto na associação de recursos ao dispositivo para cada quadro. Consulte Observações.
PurgeAllItems Limpe todos os itens de trabalho da bomba de thread.
WaitForAllItems Aguarde a conclusão de todos os itens de trabalho na bomba de thread.

 

Comentários

A bomba de thread carrega e processa dados em um processo de três etapas. Ele vai:

  1. Carregue e descompacte os dados com um Carregador de Dados. O objeto carregador de dados tem três métodos que a bomba de thread chamará internamente enquanto carrega e descompacta os dados: ID3DX10DataLoader::Load, ID3DX10DataLoader::D ecompress e ID3DX10DataLoader::D estroy. A funcionalidade específica dessas três APIs difere dependendo do tipo de dados que estão sendo carregados e descompactados. A interface do carregador de dados também pode ser herdada e suas APIs poderão ser alteradas se um estiver carregando um arquivo de dados definido no próprio formato personalizado.
  2. Processar os dados com um Processador de Dados. O objeto do processador de dados tem três métodos que a bomba de thread chamará internamente enquanto processa os dados: ID3DX10DataProcessor::P rocess, ID3DX10DataProcessor::CreateDeviceObject e ID3DX10DataProcessor::D estroy. A maneira como ele processa os dados será diferente dependendo do tipo de dados. Por exemplo, se os dados forem uma textura armazenada como JPEG, ID3DX10DataProcessor::P rocess fará a descompactação JPEG para obter os bits de imagem brutos da imagem. Se os dados forem um sombreador, ID3DX10DataProcessor::P rocess compilará o HLSL em código de bytes. Depois que os dados forem processados, um objeto de dispositivo será criado para esses dados (com ID3DX10DataProcessor::CreateDeviceObject) e o objeto será adicionado a uma fila de objetos de dispositivo. A interface do processador de dados também pode ser herdada e suas APIs poderão ser alteradas se um estiver processando um arquivo de dados definido no próprio formato personalizado.
  3. Associe o objeto de dispositivo ao dispositivo. Isso é feito quando o aplicativo chama ID3DX10ThreadPump::P rocessDeviceWorkItems, que associará um número especificado de objetos na fila de objetos de dispositivo ao dispositivo.

A bomba de thread pode ser usada para carregar dados de duas maneiras: chamando uma API que usa uma bomba de thread como um parâmetro, como D3DX10CreateTextureFromFile e D3DX10CompileFromFile ou chamando ID3DX10ThreadPump::AddWorkItem. No caso das APIs que utilizam uma bomba de thread, o carregador de dados e o processador de dados são criados internamente. No caso de AddWorkItem, o carregador de dados e o processador de dados devem ser criados com antecedência e, em seguida, são passados para AddWorkItem. O D3DX10 fornece um conjunto de APIs para criar carregadores de dados e processadores de dados que têm funcionalidade para carregar e processar formatos de dados comuns (consulte comentários para obter a lista completa de APIs). Para formatos de dados personalizados, o carregador de dados e as interfaces do processador de dados devem ser herdados e seus métodos devem ser redefinidos.

O objeto de bomba de thread ocupa uma quantidade substancial de recursos, portanto, geralmente, apenas um deve ser criado por aplicativo.

Carregadores de dados D3DX10 internos

Descrição
D3DX10CreateAsyncFileLoader Crie um carregador de arquivos de forma assíncrona.
D3DX10CreateAsyncMemoryLoader Crie um carregador de dados de forma assíncrona.
D3DX10CreateAsyncResourceLoader Crie um carregador de recursos de forma assíncrona.

 

Processadores de dados D3DX10 internos

Descrição
D3DX10CreateAsyncTextureProcessor Crie um processador de dados a ser usado com uma bomba de thread. Essa API é semelhante a D3DX10CreateAsyncTextureInfoProcessor, mas também carrega a textura.
D3DX10CreateAsyncTextureInfoProcessor Crie um processador de dados a ser usado com uma bomba de thread.
D3DX10CreateAsyncShaderCompilerProcessor Compile um sombreador e crie um processador de dados de forma assíncrona.
D3DX10CreateAsyncEffectCompilerProcessor Crie um efeito com um processador de dados de forma assíncrona.
D3DX10CreateAsyncEffectCreateProcessor Crie um pool de efeitos de forma assíncrona.
D3DX10CreateAsyncEffectPoolCreateProcessor Crie um processador de dados de forma assíncrona.
D3DX10CreateAsyncShaderPreprocessProcessor Crie um processador de dados para um sombreador de forma assíncrona.

 

APIs que tomam uma bomba de thread como um parâmetro.

Descrição
D3DX10CompileFromFile Compile um sombreador de um arquivo.
D3DX10CompileFromMemory Compile um sombreador que reside na memória.
D3DX10CompileFromResource Compile um sombreador de um recurso.
D3DX10CreateEffectFromFile Crie um efeito de um arquivo.
D3DX10CreateEffectFromMemory Crie um efeito da memória.
D3DX10CreateEffectFromResource Crie um efeito de um recurso.
D3DX10CreateEffectPoolFromFile Crie um pool de efeitos de um arquivo.
D3DX10CreateEffectPoolFromMemory Crie um pool de efeitos de um arquivo que reside na memória.
D3DX10CreateEffectPoolFromResource Crie um pool de efeitos com base em um recurso.
D3DX10PreprocessShaderFromFile Crie um sombreador de um arquivo sem compilá-lo.
D3DX10PreprocessShaderFromMemory Crie um sombreador da memória sem compilá-lo.
D3DX10PreprocessShaderFromResource Crie um sombreador de um recurso sem compilá-lo.
D3DX10CreateShaderResourceViewFromFile Crie uma exibição de recurso de sombreador a partir de um arquivo.
D3DX10CreateShaderResourceViewFromMemory Crie uma exibição de recurso de sombreador de um arquivo na memória.
D3DX10CreateShaderResourceViewFromResource Crie uma exibição de recurso de sombreador a partir de um recurso.
D3DX10GetImageInfoFromFile Recupera informações sobre um determinado arquivo de imagem.
D3DX10GetImageInfoFromMemory Obtenha informações sobre uma imagem já carregada na memória.
D3DX10GetImageInfoFromResource Recupera informações sobre uma determinada imagem em um recurso.
D3DX10CreateTextureFromFile Crie um recurso de textura de um arquivo.
D3DX10CreateTextureFromMemory Crie um recurso de textura de um arquivo que reside na memória do sistema.
D3DX10CreateTextureFromResource Crie um recurso de textura com base em outro recurso.

 

Requisitos

Requisito Valor
parâmetro
D3DX10.h
Biblioteca
D3DX10.lib

Confira também

D3DX Interfaces