ID3D11DeviceContext::Map-Methode (d3d11.h)
Ruft einen Zeiger auf die Daten ab, die in einer Unterressource enthalten sind, und verweigert dem GPU-Zugriff auf diese Unterressource.
Syntax
HRESULT Map(
[in] ID3D11Resource *pResource,
[in] UINT Subresource,
[in] D3D11_MAP MapType,
[in] UINT MapFlags,
[out, optional] D3D11_MAPPED_SUBRESOURCE *pMappedResource
);
Parameter
[in] pResource
Typ: ID3D11Resource*
Ein Zeiger auf eine ID3D11Resource-Schnittstelle .
[in] Subresource
Typ: UINT
Indexnummer der Unterressource.
[in] MapType
Typ: D3D11_MAP
Ein D3D11_MAP typisierter Wert, der die Lese- und Schreibberechtigungen der CPU für eine Ressource angibt.
[in] MapFlags
Typ: UINT
Flag , das angibt, was die CPU tut, wenn die GPU ausgelastet ist. Dieses Flag ist optional.
[out, optional] pMappedResource
Typ: D3D11_MAPPED_SUBRESOURCE*
Ein Zeiger auf die D3D11_MAPPED_SUBRESOURCE-Struktur für die zugeordnete Unterressource. Weitere Informationen finden Sie im Abschnitt Hinweise zu NULL-Zeigern.
Rückgabewert
Typ: HRESULT
Diese Methode gibt einen der Direct3D 11-Rückgabecodes zurück.
Diese Methode gibt auch DXGI_ERROR_WAS_STILL_DRAWING zurück, wenn MapFlagsD3D11_MAP_FLAG_DO_NOT_WAIT angibt und die GPU noch nicht mit der Ressource fertig ist.
Diese Methode gibt auch DXGI_ERROR_DEVICE_REMOVED zurück, wenn MapType CPU-Lesezugriff zulässt und das Video Karte entfernt wurde.
Weitere Informationen zu diesen Fehlercodes finden Sie unter DXGI_ERROR.
Hinweise
Wenn Sie Map in einem verzögerten Kontext aufrufen, können Sie nur D3D11_MAP_WRITE_DISCARD, D3D11_MAP_WRITE_NO_OVERWRITE oder beides an den MapType-Parameter übergeben. Andere D3D11_MAP typisierte Werte werden für einen verzögerten Kontext nicht unterstützt.
NULL-Zeiger für pMappedResource
Der pMappedResource-Parameter kann NULL sein, wenn eine Textur bereitgestellt wird, die mit D3D11_USAGE_DEFAULT erstellt wurde, und die API in einem unmittelbaren Kontext aufgerufen wird. Dadurch kann eine Standardtextur zugeordnet werden, auch wenn sie mit D3D11_TEXTURE_LAYOUT_UNDEFINED erstellt wurde. Nach diesem API-Aufruf kann mithilfe von ID3D11DeviceContext3::WriteToSubresource und/oder ID3D11DeviceContext3::ReadFromSubresource auf die Textur zugegriffen werden.Lesen Sie nicht aus einer Für das Schreiben zugeordneten Unterressource.
Wenn Sie D3D11_MAP_WRITE, D3D11_MAP_WRITE_DISCARD oder D3D11_MAP_WRITE_NO_OVERWRITE an den MapType-Parameter übergeben, müssen Sie sicherstellen, dass Ihre App nicht die Unterressourcendaten liest, auf die der pData-Membervon D3D11_MAPPED_SUBRESOURCE verweist, da dies zu erheblichen Leistungseinbußen führen kann. Der Speicherbereich, dem pData-PunktePAGE_WRITECOMBINE zugeordnet werden können, und Ihre App muss alle Einschränkungen berücksichtigen, die diesem Arbeitsspeicher zugeordnet sind.Sogar der folgende C++-Code kann aus dem Arbeitsspeicher lesen und die Leistungseinbußen auslösen, da der Code auf den folgenden x86-Assemblycode erweitert werden kann.
C++-Code:
*((int*)MappedResource.pData) = 0;
x86-Assemblycode:
AND DWORD PTR [EAX],0
Verwenden Sie die entsprechenden Optimierungseinstellungen und Sprachkonstrukte, um diese Leistungseinbußen zu vermeiden. Beispielsweise können Sie die xor-Optimierung vermeiden, indem Sie einen flüchtigen Zeiger verwenden oder die Codegeschwindigkeit anstelle der Codegröße optimieren.
Windows Phone 8: Diese API wird unterstützt.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform | Windows |
Kopfzeile | d3d11.h |
Bibliothek | D3D11.lib |