Share via


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.
Weitere Informationen zu den vorherigen Rückgabewerten finden Sie unter DXGI_ERROR.

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

Weitere Informationen

ID3D10Buffer-Schnittstelle