Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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 |