Compartilhar via


Como a área de um recurso lado a lado é lado a lado

Quando você cria um recurso lado a lado, 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 necessários para apoiar toda a área da superfície. O layout de pixel/bytes dentro de blocos é determinado pela implementação. O número de pixels que se enquadram em um bloco, dependendo do tamanho do elemento de formato, é fixo e idêntico se você usa um padrão com swizzling ou não.

O número de blocos que serão usados por uma largura de elemento de tamanho e formato de superfície fornecida é bem definido e previsível com base nas tabelas das 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, algumas restrições existem e são discutidas no empacotamento mipmap.

Diferentes recursos lado a lado 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 leitura com outro. Mas, em circunstâncias restritas, os aplicativos podem contar com os resultados da gravação na memória com um formato e leitura com outro se os formatos estiverem na mesma família de formato (ou seja, eles têm 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. Um aplicativo deve corresponder conservadoramente a todas as propriedades de recurso para reinterpretar dados entre duas texturas, pois os padrões de bloco são muito conservadormente indefinidos. Obviamente, porém, o formato é mais frouxo. Os formatos só precisam ser compatíveis conforme ilustrado acima. Uma exceção é onde o sangramento de dados de suavização de um formato para outro está bem definido: se um bloco completamente contém 0 para todos os seus bits, esse bloco pode ser usado com qualquer formato que interpreta esses conteúdos de memória como 0 (independentemente do layout de memória). Portanto, um bloco pode ser limpo para 0x00 com o formato DXGI_FORMAT_R8_UNORM e, em seguida, 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 pode depender das propriedades do recurso, do sub-recurso no qual ele reside e do local do bloco dentro do sub-recurso. As principais exceções são ilustradas acima: formatos compatíveis com outras propriedades de recurso sendo iguais e quando todos os texels são o mesmo padrão.

Nesta seção

Tópico Descrição
Sub-recursos lado a lado de Texture2D e Texture2DArray
Essas tabelas mostram como os sub-recursos Texture2D e Texture2DArray são lado a lado.
Sub-recursos lado a lado de Texture3D
Esta tabela mostra como os sub-recursos Texture3D são lado a lado.
Buffers colocados lado a lado
Um recurso buffer será 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.
Compactação de mapas MIP
Dependendo do suporte à camada de recursos lado a lado, os mipmaps com determinadas dimensões não seguem as formas de bloco padrão e são considerados todos empacotados uns com os outros de uma maneira opaca ao aplicativo.

Criando recursos lado a lado