Recursos
Um recurso é uma área na memória que pode ser acessada pelo pipeline de Direct3D. Para que o pipeline acesse a memória com eficiência, os dados fornecidos ao pipeline (como geometria de entrada, recursos de sombreador e texturas) devem ser armazenados em um recurso. Existem dois tipos de recursos dos quais todos os recursos de Direct3D são derivados: um buffer ou uma textura. Até 128 recursos podem estar ativos para cada estágio do pipeline.
Cada aplicativo normalmente criará muitos recursos. Exemplos de recursos incluem: buffers de vértice, buffer de índice, buffer constante, texturas e recursos de sombreador. Existem várias opções que determinam como os recursos podem ser usados. Você pode criar recursos fortemente tipados ou sem tipo; Você pode controlar se os recursos têm acesso de leitura e gravação; você pode tornar os recursos acessíveis apenas para a CPU, GPU ou ambos. Naturalmente, haverá uma troca de velocidade versus funcionalidade - quanto mais funcionalidade você permitir que um recurso tenha, menos desempenho você deve esperar.
Como um aplicativo geralmente usa muitas texturas, o Direct3D também tem o conceito de uma matriz de textura para simplificar o gerenciamento de texturas. Uma matriz de textura contém uma ou mais texturas (todas do mesmo tipo e dimensões) que podem ser indexadas de dentro de um aplicativo ou por sombreadores. As matrizes de textura permitem que você use uma única interface com vários índices para acessar muitas texturas. Você pode criar quantas matrizes de textura forem necessárias para gerenciar diferentes tipos de textura.
Depois de criar os recursos que seu aplicativo usará, você conecta ou associa cada recurso aos estágios do pipeline que os usarão. Isso é feito chamando uma API de associação, que usa um ponteiro para o recurso. Como mais de um estágio de pipeline pode precisar de acesso ao mesmo recurso, o Direct3D tem o conceito de uma exibição de recurso. Uma exibição identifica a parte de um recurso que pode ser acessada. Você pode criar m exibições ou um recurso e associá-los a n estágios de pipeline, supondo que você siga regras de associação para recursos compartilhados (o runtime gerará erros em tempo de compilação se você não o fizer).
Uma exibição de recurso fornece um modelo geral para acesso a um recurso (como texturas ou buffers). Como você pode usar uma exibição para informar ao tempo de execução quais dados acessar e como acessá-los, as exibições de recursos permitem que você crie recursos sem tipo. Ou seja, você pode criar recursos para um determinado tamanho em tempo de compilação e, em seguida, declarar o tipo de dados dentro do recurso quando o recurso for associado ao pipeline. As exibições expõem muitos recursos para o uso de recursos, como a capacidade de ler superfícies de profundidade/estêncil no sombreador, gerar cubemaps dinâmicos em uma única passagem e renderizar simultaneamente para várias fatias de um volume.
Nesta seção
Tópico | Descrição |
---|---|
Diferentes tipos de recursos têm um layout distinto (ou volume de memória). Todos os recursos usados pelo pipeline do Direct3D derivam de dois tipos básicos de recursos: buffers e texturas. Um buffer é uma coleção de dados brutos (elementos); Uma textura é uma coleção de texels (elementos de textura). |
|
Um recurso é uma coleção de dados usada pelo pipeline 3D. Criar recursos e definir seu comportamento é o primeiro passo para programar seu aplicativo. Este guia aborda tópicos básicos para escolher os recursos exigidos pelo seu aplicativo. |
|
Os sinalizadores de uso indicam como o aplicativo pretende usar os dados do recurso, para colocar os recursos na área de memória com o melhor desempenho possível. Os dados do recurso são copiados entre os recursos para que a CPU ou GPU possa acessá-los sem afetar o desempenho. |
|
No Direct3D, os recursos de textura são acessados com um modo de exibição, que é um mecanismo para interpretação de hardware de um recurso na memória. Um modo de exibição permite que um estágio de pipeline específico acesse somente os sub-recursos de que precisa, na representação desejada pelo app. |