Metodo ID3D11DeviceContext::Map (d3d11.h)
Ottiene un puntatore ai dati contenuti in una sottoresource e nega l'accesso della GPU a tale sottoresource.
Sintassi
HRESULT Map(
[in] ID3D11Resource *pResource,
[in] UINT Subresource,
[in] D3D11_MAP MapType,
[in] UINT MapFlags,
[out, optional] D3D11_MAPPED_SUBRESOURCE *pMappedResource
);
Parametri
[in] pResource
Tipo: ID3D11Resource*
Puntatore a un'interfaccia ID3D11Resource .
[in] Subresource
Tipo: UINT
Numero di indice della sottoresource.
[in] MapType
Tipo: D3D11_MAP
Valore D3D11_MAP tipizzato che specifica le autorizzazioni di lettura e scrittura della CPU per una risorsa.
[in] MapFlags
Tipo: UINT
Contrassegno che specifica le operazioni della CPU quando la GPU è occupato. Questo flag è facoltativo.
[out, optional] pMappedResource
Tipo: D3D11_MAPPED_SUBRESOURCE*
Puntatore alla struttura di D3D11_MAPPED_SUBRESOURCE per la sottoresource mappata. Vedere la sezione Osservazioni relative ai puntatori NULL.
Valore restituito
Tipo: HRESULT
Questo metodo restituisce uno dei codici restituiti Direct3D 11.
Questo metodo restituisce anche DXGI_ERROR_WAS_STILL_DRAWING se MapFlags specifica D3D11_MAP_FLAG_DO_NOT_WAIT e la GPU non è ancora stata completata con la risorsa.
Questo metodo restituisce anche DXGI_ERROR_DEVICE_REMOVED se MapType consente l'accesso in lettura cpu e la scheda video è stata rimossa.
Per altre informazioni su questi codici di errore, vedere DXGI_ERROR.
Commenti
Se si chiama Map in un contesto posticipato, è possibile passare solo D3D11_MAP_WRITE_DISCARD, D3D11_MAP_WRITE_NO_OVERWRITE o entrambi al parametro MapType . Altri valori tipizzati D3D11_MAP non sono supportati per un contesto posticipato.
Puntatori NULL per pMappedResource
Il parametro pMappedResource può essere NULL quando viene fornita una trama creata con D3D11_USAGE_DEFAULT e l'API viene chiamata in un contesto immediato. Ciò consente di eseguire il mapping di una trama predefinita, anche se è stata creata usando D3D11_TEXTURE_LAYOUT_UNDEFINED. Dopo questa chiamata API, è possibile accedere alla trama usando ID3D11DeviceContext3::WriteToSubresource e/o ID3D11DeviceContext3::ReadFromSubresource.Non leggere da una sottoresource mappata per la scrittura
Quando si passa D3D11_MAP_WRITE, D3D11_MAP_WRITE_DISCARD o D3D11_MAP_WRITE_NO_OVERWRITE al parametro MapType, è necessario assicurarsi che l'app non legge i dati di sottoresource a cui il membro pData di D3D11_MAPPED_SUBRESOURCE punti perché in questo modo può causare una riduzione significativa delle prestazioni. L'area di memoria a cui possono essere allocati punti pData con PAGE_WRITECOMBINE e l'app deve rispettare tutte le restrizioni associate a tale memoria.Anche il codice C++ seguente può leggere dalla memoria e attivare la penalità delle prestazioni perché il codice può espandersi al codice dell'assembly x86 seguente.
Codice C++:
*((int*)MappedResource.pData) = 0;
Codice assembly x86:
AND DWORD PTR [EAX],0
Usare le impostazioni di ottimizzazione e i costrutti linguistici appropriati per evitare questa penalità delle prestazioni. Ad esempio, è possibile evitare l'ottimizzazione xor usando un puntatore volatile o ottimizzando la velocità del codice anziché le dimensioni del codice.
Windows Phone 8: questa API è supportata.
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Windows |
Intestazione | d3d11.h |
Libreria | D3D11.lib |