Recursos (Direct3D 10)

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 para o pipeline (como geometria de entrada, recursos de sombreador, texturas etc. ) 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 app 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 com tipo forte ou sem tipo; você pode controlar se os recursos têm tanto acesso de leitura quanto de gravação; você pode disponibilizar recursos somente para CPU, GPU ou ambas. Naturalmente, haverá compensação entre velocidade versus funcionalidade: quanto maior a funcionalidade que você permitir a um recurso, o menor será o desempenho esperado.

Como um aplicativo geralmente usa muitas texturas, o Direct3D também apresenta o conceito de uma matriz de textura para simplificar o gerenciamento de textura. 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 app ou por meio de sombreadores. 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 precisar para gerenciar tipos diferentes de textura.

Depois de criar os recursos que seu app usará, conecte ou associe cada recurso aos estágios de pipeline que farão uso deles. Isso é feito chamando uma API de vinculação, que leva um ponteiro para o recurso. Como mais de um estágio de pipeline pode precisar de acesso ao mesmo recurso, o Direct3D 10 apresenta o conceito de uma exibição de recurso. Um modo de exibição identifica a parte de um recurso que pode ser acessada. Você pode criar m modos de exibição, ou um recurso, e associá-los a n estágios, pressupondo que você siga as regras de associação para recurso compartilhado (o tempo de execução irá gerar erros no momento da compilação se você não fizer isso).

Uma exibição de recurso fornece um modelo geral para acesso a um recurso (texturas, buffers etc.). Como você pode usar um modo de exibição para informar o tempo de execução sobre quais dados acessar e como acessá-los, exibições de recursos permitem criar recursos sem tipo. Ou seja, você pode criar recursos para um determinado tamanho no momento da compilação e, em seguida, declarar o tipo de dados dentro do recurso quando o recurso for vinculado ao pipeline. As exibições expõem muitos novos recursos para usar 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.

Para saber mais sobre os tipos de recursos básicos, matrizes de textura e como criar e usar recursos, consulte estes outros tópicos:

Guia de programação para Direct3D 10