Compartilhar via


Interface ID3DX11ThreadPump

Observação

A biblioteca de utilitários D3DX (D3DX 9, D3DX 10 e D3DX 11) foi preterida para Windows 8 e não tem suporte para aplicativos da Windows Store.

Uma bomba de thread executa tarefas de forma assíncrona. Ele é criado chamando D3DX11CreateThreadPump. Há várias APIs que tomam uma bomba de thread opcional como um parâmetro, como D3DX11CreateTextureFromFile e D3DX11CompileFromFile; se você passar uma interface de bomba de thread para essas APIs, as funções serão executadas de forma assíncrona em um thread separado. Especialmente em computadores multiprocessadores, uma bomba de thread pode carregar recursos e processar dados sem uma diminuição perceptível no desempenho.

Membros

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

Métodos

A interface ID3DX11ThreadPump tem esses métodos.

Método Descrição
AddWorkItem Nota: A biblioteca de utilitários D3DX (D3DX 9, D3DX 10 e D3DX 11) foi preterida para Windows 8 e não tem suporte para aplicativos da Windows Store.
Adiciona um item de trabalho à bomba de thread.
GetQueueStatus Nota: A biblioteca de utilitários D3DX (D3DX 9, D3DX 10 e D3DX 11) foi preterida para Windows 8 e não tem suporte para aplicativos da Windows Store.
Obtém o número de itens em cada uma das três filas dentro da bomba de thread.
GetWorkItemCount Nota: A biblioteca de utilitários D3DX (D3DX 9, D3DX 10 e D3DX 11) foi preterida para Windows 8 e não tem suporte para aplicativos da Windows Store.
Obtém o número de itens de trabalho na bomba de thread.
ProcessDeviceWorkItems Nota: A biblioteca de utilitários D3DX (D3DX 9, D3DX 10 e D3DX 11) foi preterida para Windows 8 e não tem suporte para aplicativos da Windows Store.
Define itens de trabalho para o dispositivo depois que eles terminarem de carregar e processar.
PurgeAllItems Nota: A biblioteca de utilitários D3DX (D3DX 9, D3DX 10 e D3DX 11) foi preterida para Windows 8 e não tem suporte para aplicativos da Windows Store.
Limpa todos os itens de trabalho da bomba de thread.
WaitForAllItems Nota: A biblioteca de utilitários D3DX (D3DX 9, D3DX 10 e D3DX 11) foi preterida para Windows 8 e não tem suporte para aplicativos da Windows Store.
Aguarda a conclusão de todos os itens de trabalho na bomba de thread.

Comentários

Usando uma bomba de thread

A bomba de thread carrega e processa dados usando o seguinte processo de três etapas:

  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: ID3DX11DataLoader::Load, ID3DX11DataLoader::D ecompress e ID3DX11DataLoader::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: ID3DX11DataProcessor::P rocess, ID3DX11DataProcessor::CreateDeviceObject e ID3DX11DataProcessor::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, ID3DX11DataProcessor::P rocess fará a descompactação JPEG para obter os bits de imagem brutos da imagem. Se os dados forem um sombreador, ID3DX11DataProcessor::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 ID3DX11DataProcessor::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 ID3DX11ThreadPump::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 D3DX11CreateTextureFromFile e D3DX11CompileFromFile ou chamando ID3DX11ThreadPump::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 D3DX11 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. 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.

Requisitos

Requisito Valor
Cliente mínimo com suporte
Windows 7 [somente aplicativos da área de trabalho]
Servidor mínimo com suporte
Windows Server 2008 R2 [somente aplicativos da área de trabalho]
Cabeçalho
D3DX11core.h
Biblioteca
D3DX11.lib

Confira também

D3DX Interfaces