Pular para o conteúdo principal
Usa a CPU para copiar dados para um sub-recurso, permitindo que a CPU modifique o conteúdo da maioria das texturas com layouts indefinidos.

Sintaxe

Parâmetros

DstSubresource
Tipo: UINT
Especifica o índice do sub-recurso. pDstBox [in, optional]
Tipo: const D3D12_BOX *
Um ponteiro para uma caixa que define a parte do sub-recurso de destino para a qual copiar os dados do recurso. Se for NULL, os dados serão gravados no sub-recurso de destino sem deslocamento. As dimensões da origem devem caber no destino (consulte D3D12_BOX). Uma caixa vazia resulta em nenhuma operação. Uma caixa está vazia se o valor superior for maior ou igual ao valor inferior, ou se o valor esquerdo for maior ou igual ao valor direito, ou se o valor frontal for maior ou igual ao valor traseiro. Quando a caixa está vazia, este método não executa nenhuma operação. pSrcData [in]
Tipo: const void *
Um ponteiro para os dados de origem na memória. SrcRowPitch
Tipo: UINT
A distância de uma linha de dados de origem até a próxima linha. SrcDepthPitch
Tipo: UINT
A distância de uma fatia de profundidade de dados de origem até a próxima.

Valor retornado

Tipo: HRESULT Este método retorna um dos Códigos de retorno do Direct3D 12.

Comentários

OBSERVAÇÃO: No momento, não há suporte para isso nos consoles XBOX Series e na família XBOX One.
O recurso deve primeiro ser mapeado usando Map. As texturas devem estar no estado D3D12_RESOURCE_STATE_COMMON para que o acesso da CPU por meio de WriteToSubresource e ReadFromSubresource seja válido; mas os buffers não precisam. Para maior eficiência, garanta que os limites e o alinhamento das extensões dentro da caixa sejam de ( 64 / [bytes por pixel] ) pixels na horizontal. Os limites e o alinhamento verticais devem ser de 2 linhas, exceto quando formatos de 1 byte por pixel forem usados; nesse caso, 4 linhas são recomendadas. Fatias de profundidade únicas por chamada são tratadas com eficiência. É recomendado, mas não necessário, fornecer ponteiros e passos alinhados a 128 bytes. Ao gravar em subníveis de mipmap, é recomendável usar larguras e alturas maiores do que as descritas acima. Isso ocorre porque níveis de mipmap pequenos podem, na verdade, ser armazenados dentro de um bloco maior de memória, com uma quantidade opaca de deslocamento que pode interferir no alinhamento com as linhas de cache. WriteToSubresource e ReadFromSubresource permitem otimizações de cópia quase zero para adaptadores UMA, mas podem prejudicar de forma proibitiva a eficiência de adaptadores discretos/NUMA, pois os dados de textura não podem residir na memória de vídeo local. Aplicativos típicos devem se ater a técnicas de upload adequadas a adaptadores discretos, a menos que reconheçam que a arquitetura do adaptador é UMA. Para obter mais detalhes sobre upload, consulte CopyTextureRegion e, para obter mais detalhes sobre UMA, consulte D3D12_FEATURE_DATA_ARCHITECTURE. Em sistemas UMA, esta rotina pode ser usada para minimizar o custo da cópia de memória por meio da otimização de loop conhecida como loop tiling. Ao dividir o upload em blocos que caibam confortavelmente no cache da CPU, a largura de banda efetiva entre a CPU e a memória principal se aproxima mais dos máximos teóricos.

Requisitos

Cabeçalho: d3d12_xs.h ou d3d12_x.h
Biblioteca: d3d12_xs.lib ou d3d12_x.lib
Plataformas com suporte: atualmente sem suporte nos consoles XBOX Series e na família XBOX One

Confira também

ID3D12Resource Sub-recursos
Última modificação em 6 de outubro de 2026