Compartilhar via


Como uma área de recurso de streaming é colocada lado a lado

Quando você cria um recurso de streaming, as dimensões, o tamanho do elemento de formato e o número de mipmaps e/ou fatias de matriz (se aplicável) determinam o número de blocos que são necessários para toda a área de superfície. O layout de pixel/byte nos blocos é determinado pela implementação. O número de pixels que cabem em um bloco, dependendo do tamanho do elemento de formato, é fixo e idêntico, independentemente de você usar um swizzle padrão ou não.

O número de blocos que serão usados por um determinado tamanho de superfície e largura do elemento de formato é bem definido e previsível com base nas tabelas nas seções a seguir. Para recursos que contêm mipmaps ou casos em que as dimensões da superfície não preenchem um bloco, existem algumas restrições; consulte Empacotamento de Mipmap.

Diferentes recursos de streaming podem apontar para memória idêntica com formatos diferentes, desde que os aplicativos não dependam dos resultados da gravação na memória com um formato e da leitura com outro. Mas os aplicativos podem contar com os resultados da gravação na memória com um formato e da leitura com outro se os formatos estiverem na mesma família de formatos (ou seja, eles tiverem o mesmo formato pai sem tipo). Por exemplo, DXGI_FORMAT_R8G8B8A8_UNORM e DXGI_FORMAT_R8G8B8A8_UINT são compatíveis entre si, mas não com DXGI_FORMAT_R16G16_UNORM.

Uma exceção é quando a sangria de dados de um alias de formato para outro é bem definida: se um bloco contiver completamente 0 para todos os seus bits, esse bloco poderá ser usado com qualquer formato que interprete esse conteúdo de memória como 0 (independentemente do layout da memória). Assim, um bloco pode ser limpo para 0x00 com o formato DXGI_FORMAT_R8_UNORM e depois usado com um formato como DXGI_FORMAT_R32G32_FLOAT e parece que o conteúdo ainda está (0.0f, 0.0f).

O layout dos dados em um bloco não depende de onde o bloco é mapeado em um recurso geral. Assim, por exemplo, um ladrilho pode ser reutilizado em diferentes locais de uma superfície de uma só vez com comportamento consistente em todos os locais.

Nesta seção

Tópico Descrição

Mosaico de sub-recursos Texture2D e Texture2DArray

Essas tabelas mostram como os sub-recursos Texture2D e Texture2DArray são colocados em blocos.

Mosaico de sub-recursos Texture3D

Esta tabela mostra como os sub-recursos do Texture3D são colocados lado a lado.

Mosaico de buffer

Um recurso de Buffer é dividido em blocos de 64 KB, com algum espaço vazio no último bloco se o tamanho não for um múltiplo de 64 KB.

Embalagem Mipmap

Um número de mips (por fatia de matriz) pode ser incluído em um número de blocos, dependendo das dimensões de um recurso de streaming, formato, número de mipmaps e fatias da matriz.

 

Criar recursos de streaming