Método ID3D11DeviceContext::Map (d3d11.h)
Obtém um ponteiro para os dados contidos em uma sub-fonte 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 de ID3D11Resource de.
[in] Subresource
Número de índice do sub-recurso .
[in] MapType
Tipo: D3D11_MAP
Um valor D3D11_MAPdigitado que especifica as permissões de leitura e gravação da CPU para um recurso.
[in] MapFlags
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.
Valor de retorno
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 MapFlags especificar 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 a placa de vídeo tiver sido removida.
Para obter mais informações sobre esses códigos de erro, consulte DXGI_ERROR.
Observações
Se você chamar Map em um contexto adiado, só poderá passar D3D11_MAP_WRITE_DISCARD, D3D11_MAP_WRITE_NO_OVERWRITEou ambos para o parâmetro MapType. Não há suporte para outros valores tipados em D3D11_MAPpara um contexto adiado.
ponteiros NULL para pMappedResource
O parâmetro pMappedResource pode ser NULL quando uma textura é fornecida que foi criada com D3D11_USAGE_DEFAULTe 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_DISCARDou D3D11_MAP_WRITE_NO_OVERWRITE para o parâmetro MapType, você deve garantir que seu aplicativo não leia os dados de sub-fonte aos quais o pData membro de pontos de D3D11_MAPPED_SUBRESOURCE porque isso pode causar uma penalidade de desempenho significativa. A região de memória à qual pData pontos pode ser alocada com PAGE_WRITECOMBINEe 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 de 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 os constructos de linguagem para ajudar a evitar essa penalidade de desempenho. Por exemplo, você pode evitar a otimização xor usando um ponteiro volátil ou otimizando para a velocidade do código em vez do tamanho do código.
Windows Phone 8: essa API tem suporte.
Requisitos
Requisito | Valor |
---|---|
da Plataforma de Destino | Windows |
cabeçalho | d3d11.h |
biblioteca | D3D11.lib |