ID3D10Texture1D::Map-Methode (d3d10.h)

Rufen Sie einen Zeiger auf die Daten ab, die in einer Unterressource enthalten sind, und verweigern Sie der GPU den Zugriff auf diese Unterressource.

Syntax

HRESULT Map(
  [in]  UINT      Subresource,
  [in]  D3D10_MAP MapType,
  [in]  UINT      MapFlags,
  [out] void      **ppData
);

Parameter

[in] Subresource

Typ: UINT

Indexnummer der Unterressource. Weitere Informationen finden Sie unter D3D10CalcSubresource .

[in] MapType

Typ: D3D10_MAP

Gibt die Lese- und Schreibberechtigungen der CPU für eine Ressource an. 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. Dieses Flag ist optional.

[out] ppData

Typ: void**

Zeiger auf die Texturressourcendaten.

Rückgabewert

Typ: HRESULT

Wenn diese Funktion erfolgreich ist, gibt sie S_OK zurück. Weitere Einschränkungen und eine Auflistung der Fehlerwerte, die von einer der Map-Methoden zurückgegeben werden können, finden Sie unter Hinweise.

Hinweise

Durch die Zuordnung einer Textur kann die CPU direkt auf die zugrunde liegenden Daten in der Unterquelle einer Textur zugreifen. Damit die Methode erfolgreich ist, muss die zugeordnete Textur mit den entsprechenden Flags (siehe D3D10_CPU_ACCESS_FLAG) erstellt werden, und die angegebene Verwendung (siehe D3D10_USAGE) muss entweder D3D10_USAGE_DYNAMIC oder D3D10_USAGE_STAGING sein.

Häufige Fehler von Map-Methoden werden durch die folgenden Rückgabewerte angezeigt:

Element BESCHREIBUNG
DXGI_ERROR_WAS_STILL_DRAWING Wenn MapFlags D3D10_MAP_FLAG_DO_NOT_WAIT angibt und die GPU noch nicht mit der Ressource fertig ist, gibt Map DXGI_ERROR_WAS_STILL_DRAWING zurück.
DXGI_ERROR_DEVICE_REMOVED Map gibt DXGI_ERROR_DEVICE_REMOVED zurück, wenn MapType cpu-Lesezugriff zulässt und das Video Karte entfernt wurde.
 

Weitere Informationen zu den vorherigen Rückgabewerten finden Sie unter DXGI_ERROR.

Map weist die folgenden Einschränkungen auf:

  • Eine einzelne Unterquelle kann nicht mehrmals zugeordnet werden. Mit anderen Worten: Rufen Sie Map nicht für eine Bereits zugeordnete Unterressource auf.
  • Alle An die Pipeline gebundenen Unterressourcen müssen aufgehoben werden, bevor ein Rendervorgang (also vor ID3D10Device::D raw) ausgeführt werden kann.
Anwendungen müssen den void pData-Zeiger auf den entsprechenden Typ umwandeln, um sinnvoll auf die zugrunde liegenden Unterressourcendaten zuzugreifen. Der folgende Code veranschaulicht beispielsweise, wie jeder Texel einer 1D-Unterressource gelesen wird. Es wird davon ausgegangen, dass die Textur mit DXGI_FORMAT_R32G32B32A32_FLOAT erstellt wurde und dass pData der Zeiger auf die Texturressourcendaten ist, die bei einem erfolgreichen Aufruf dieser Methode ausgegeben wurden.

FLOAT* pTexels = (FLOAT*)pData;
for( UINT col = 0; col < width; col++ )
{
  pTexels[col*4 + 0]; // Alpha
  pTexels[col*4 + 1]; // Blue
  pTexels[col*4 + 2]; // Green
  pTexels[col*4 + 3]; // Red
}

Unterschiede zwischen Direct3D 9 und Direct3D 10:

Die Zuordnung in Direct3D 10 entspricht der Ressourcensperre in Direct3D 9.

Anforderungen

   
Zielplattform Windows
Kopfzeile d3d10.h
Bibliothek D3D10.lib

Weitere Informationen

ID3D10Texture1D-Schnittstelle