Vorgehensweise: Programmgesteuertes Initialisieren einer Textur

Sie können eine Textur während der Objekterstellung initialisieren oder das Objekt programmgesteuert füllen, nachdem es erstellt wurde. Dieses Thema enthält mehrere Beispiele, die zeigen, wie Texturen initialisiert werden, die mit unterschiedlichen Verwendungstypen erstellt werden. In diesem Beispiel wird davon ausgegangen, dass Sie bereits wissen, wie Sie eine Textur erstellen.

Standardverwendung

Die häufigste Verwendungsart ist die Standardverwendung. Um eine Standardtextur (eine mit D3D11_USAGE_DEFAULT erstellt) zu füllen, können Sie entweder:

Dynamische Nutzung

So füllen Sie eine dynamische Textur (eine, die mit D3D11_USAGE_DYNAMIC erstellt wurde):

  1. Rufen Sie einen Zeiger auf den Texturspeicher ab, indem Sie beim Aufrufen von ID3D11DeviceContext::Map D3D11_MAP_WRITE_DISCARD übergeben.
  2. Schreiben Sie Daten in den Arbeitsspeicher.
  3. Rufen Sie ID3D11DeviceContext::Unmap auf, wenn Sie mit dem Schreiben von Daten fertig sind.

Stagingverwendung

So füllen Sie eine Stagingtextur (eine, die mit D3D11_USAGE_STAGING erstellt wurde):

  1. Rufen Sie einen Zeiger auf den Texturspeicher ab, indem Sie beim Aufrufen von ID3D11DeviceContext::Map D3D11_MAP_WRITE übergeben.
  2. Schreiben Sie Daten in den Arbeitsspeicher.
  3. Rufen Sie ID3D11DeviceContext::Unmap auf, wenn Sie mit dem Schreiben von Daten fertig sind.

Anschließend kann eine Stagingtextur als Quellparameter für ID3D11DeviceContext::CopyResource oder ID3D11DeviceContext::CopySubresourceRegion verwendet werden, um eine Standardressource oder dynamische Ressource zu füllen.

Verwenden von Direct3D 11

Texturen