ID3D10Buffer::Map-Methode (d3d10.h)
Rufen Sie einen Zeiger auf die in der Ressource enthaltenen Daten ab, und verweigern Sie GPU-Zugriff auf die Ressource.
Syntax
HRESULT Map(
[in] D3D10_MAP MapType,
[in] UINT MapFlags,
[out] void **ppData
);
Parameter
[in] MapType
Typ: D3D10_MAP
Flag, das die Berechtigungen der CPU für das Lesen und Schreiben einer Ressource angibt. Mögliche Werte finden Sie unter D3D10_MAP.
[in] MapFlags
Typ: UINT
Flag, das angibt, was die CPU tun soll, wenn die GPU ausgelastet ist (siehe D3D10_MAP_FLAG). Dieses Flag ist optional.
[out] ppData
Typ: void**
Zeiger auf die Pufferressourcendaten.
Rückgabewert
Typ: HRESULT
Wenn diese Funktion erfolgreich ist, gibt sie S_OK zurück. Die folgende Liste enthält einige der Gründe, warum Map fehlschlägt:
- Wenn MapFlags D3D10_MAP_FLAG_DO_NOT_WAIT angibt und die GPU noch nicht mit der Ressource fertig ist, gibt ID3D10Buffer::Map DXGI_ERROR_WAS_STILL_DRAWING zurück.
- ID3D10Buffer::Map gibt DXGI_ERROR_DEVICE_REMOVED zurück, wenn MapType alle Flags enthält, die das Lesen ermöglichen und das Hardwaregerät (d. h. das Video Karte) entfernt wurde.
Hinweise
Damit die CPU den Inhalt einer Ressource schreibt, muss die Ressource mit dem Dynamischen Nutzungsflag erstellt werden, D3D10_USAGE_DYNAMIC. Zum Lesen und Schreiben dieser Inhalte muss die Ressource mit dem Stagingverwendungsflag D3D10_USAGE_STAGING erstellt werden. (Weitere Informationen zu diesen Flags finden Sie unter D3D10_USAGE.) ID3D10Buffer::Map ruft einen Zeiger auf die Ressourcendaten ab. Eine Diskussion zum effizienten Zugriff auf Ressourcen finden Sie unter Kopieren und Zugreifen auf Ressourcendaten (Direct3D 10).
Rufen Sie ID3D10Buffer::Unmap auf, um zu signalisieren, dass die Anwendung den Zugriff auf die Ressource abgeschlossen hat.
ID3D10Buffer::Map hat einige andere Einschränkungen. Beispiel:
- Derselbe Puffer kann nicht mehrmals zugeordnet werden. Mit anderen Worten: Rufen Sie ID3D10Buffer::Map nicht für einen Puffer auf, der bereits zugeordnet ist.
- Jeder Puffer, der an die Pipeline gebunden ist, muss aufgehoben werden, bevor ein Renderingvorgang ( id3D10Device::D raw) ausgeführt werden kann.
Unterschiede zwischen Direct3D 9 und Direct3D 10: ID3D10Buffer::Map in Direct3D 10 entspricht der Ressourcensperre in Direct3D 9. |
Anforderungen
Zielplattform | Windows |
Kopfzeile | d3d10.h |
Bibliothek | D3D10.lib |