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:
- 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.
- 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.
- 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 |
|
Biblioteca |
|
Confira também