Método ID3D11DeviceContext::Map (d3d11.h)
Obtém um ponteiro para os dados contidos em um sub-recurso e nega o acesso de GPU a esse sub-recurso.
Sintaxe
HRESULT Map(
[in] ID3D11Resource *pResource,
[in] UINT Subresource,
[in] D3D11_MAP MapType,
[in] UINT MapFlags,
[out, optional] D3D11_MAPPED_SUBRESOURCE *pMappedResource
);
Parâmetros
[in] pResource
Tipo: ID3D11Resource*
Um ponteiro para uma interface ID3D11Resource .
[in] Subresource
Tipo: UINT
Número de índice do sub-recurso.
[in] MapType
Tipo: D3D11_MAP
Um valor de tipo D3D11_MAP que especifica as permissões de leitura e gravação da CPU para um recurso.
[in] MapFlags
Tipo: UINT
Sinalizador que especifica o que a CPU faz quando a GPU está ocupada. Esse sinalizador é opcional.
[out, optional] pMappedResource
Tipo: D3D11_MAPPED_SUBRESOURCE*
Um ponteiro para a estrutura de D3D11_MAPPED_SUBRESOURCE para o sub-recurso mapeado. Consulte a seção Comentários sobre ponteiros NULL.
Retornar valor
Tipo: HRESULT
Esse método retorna um dos códigos de retorno do Direct3D 11.
Esse método também retornará DXGI_ERROR_WAS_STILL_DRAWING se MapFlagsespecificar D3D11_MAP_FLAG_DO_NOT_WAIT e a GPU ainda não estiver concluída com o recurso.
Esse método também retornará DXGI_ERROR_DEVICE_REMOVED se MapType permitir qualquer acesso de leitura da CPU e o cartão de vídeo tiver sido removido.
Para obter mais informações sobre esses códigos de erro, consulte DXGI_ERROR.
Comentários
Se você chamar Map em um contexto adiado, só poderá passar D3D11_MAP_WRITE_DISCARD, D3D11_MAP_WRITE_NO_OVERWRITE ou ambos para o parâmetro MapType . Não há suporte para outros valores de tipo D3D11_MAP para um contexto adiado.
Ponteiros NULL para pMappedResource
O parâmetro pMappedResource pode ser NULL quando uma textura é fornecida que foi criada com D3D11_USAGE_DEFAULT e a API é chamada em um contexto imediato. Isso permite que uma textura padrão seja mapeada, mesmo que tenha sido criada usando D3D11_TEXTURE_LAYOUT_UNDEFINED. Após essa chamada à API, a textura pode ser acessada usando ID3D11DeviceContext3::WriteToSubresource e/ou ID3D11DeviceContext3::ReadFromSubresource.Não ler de um sub-recurso mapeado para gravação
Ao passar D3D11_MAP_WRITE, D3D11_MAP_WRITE_DISCARD ou D3D11_MAP_WRITE_NO_OVERWRITE para o parâmetro MapType , você deve garantir que seu aplicativo não leia os dados de sub-recurso para os quais o membro pData de D3D11_MAPPED_SUBRESOURCE pontos, pois isso pode causar uma penalidade significativa de desempenho. A região de memória à qual os pontos pData podem ser alocados com PAGE_WRITECOMBINE e seu aplicativo deve respeitar todas as restrições associadas a essa memória.Até mesmo o código C++ a seguir pode ler da memória e disparar a penalidade de desempenho porque o código pode expandir para o código do assembly x86 a seguir.
Código C++:
*((int*)MappedResource.pData) = 0;
Código do assembly x86:
AND DWORD PTR [EAX],0
Use as configurações de otimização apropriadas e constructos de linguagem para ajudar a evitar essa penalidade de desempenho. Por exemplo, você pode evitar a otimização de xor usando um ponteiro volátil ou otimizando para a velocidade do código em vez do tamanho do código.
Windows Phone 8: há suporte para essa API.
Requisitos
Requisito | Valor |
---|---|
Plataforma de Destino | Windows |
Cabeçalho | d3d11.h |
Biblioteca | D3D11.lib |