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:
Rufen Sie ID3D11Device::CreateTexture2D auf, und initialisieren Sie pInitialData , um auf daten zu verweisen, die von einer Anwendung bereitgestellt werden.
oder
Nachdem Sie ID3D11Device::CreateTexture2D aufgerufen haben, verwenden Sie ID3D11DeviceContext::UpdateSubresource , um die Standardtextur mit Daten aus einem von der Anwendung bereitgestellten Zeiger zu füllen.
Dynamische Nutzung
So füllen Sie eine dynamische Textur (eine, die mit D3D11_USAGE_DYNAMIC erstellt wurde):
- Rufen Sie einen Zeiger auf den Texturspeicher ab, indem Sie beim Aufrufen von ID3D11DeviceContext::Map D3D11_MAP_WRITE_DISCARD übergeben.
- Schreiben Sie Daten in den Arbeitsspeicher.
- 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):
- Rufen Sie einen Zeiger auf den Texturspeicher ab, indem Sie beim Aufrufen von ID3D11DeviceContext::Map D3D11_MAP_WRITE übergeben.
- Schreiben Sie Daten in den Arbeitsspeicher.
- 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.
Zugehörige Themen