How to: Initialize a Texture Programmatically

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 verschiedenen Verwendungstypen erstellt werden. In diesem Beispiel wird davon ausgegangen, dass Sie bereits wissen, wie Sie eine Textur erstellen.

Standardverwendung

Der gängigste Verwendungstyp ist die Standardverwendung. Um eine Standardtextur zu füllen (eine textur, die mit D3D11 _ USAGE _ DEFAULT erstellt wurde), können Sie eine der beiden beiden:

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 D3D11 _ MAP WRITE _ _ DISCARD beim Aufrufen von ID3D11DeviceContext::Map ü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 D3D11 _ MAP _ WRITE übergeben, wenn ID3D11DeviceContext::Map aufgerufen wird.
  2. Schreiben sie Daten in den Arbeitsspeicher.
  3. Rufen Sie ID3D11DeviceContext::Unmap auf, wenn Sie mit dem Schreiben von Daten fertig sind.

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

Verwenden von Direct3D 11

Texturen