Private Surface-Daten (Direct3D 9)
Sie können jede Art von anwendungsspezifischen Daten mit einer Oberfläche speichern. Beispielsweise kann eine Oberfläche, die eine Karte in einem Spiel darstellt, Informationen über Gelände enthalten.
Eine Oberfläche kann mehrere private Datenpuffer aufweisen. Jeder Puffer wird durch eine GUID identifiziert, die Sie beim Anfügen der Daten an die Oberfläche angeben.
Verwenden Sie "SetPrivateData", um private Oberflächendaten zu speichern, und übergeben Sie einen Zeiger an den Quellpuffer, die Größe der Daten und eine anwendungsdefinierte GUID für die Daten. Optional können die Quelldaten in Form eines COM-Objekts vorhanden sein; In diesem Fall übergeben Sie einen Zeiger an den IUnknown Schnittstellenzeiger des Objekts und legen das D3DSPD_IUNKNOWNPOINTER Flag fest.
SetPrivateData weist einen internen Puffer für die Daten zu und kopiert sie. Anschließend können Sie den Quellpuffer oder das Quellobjekt sicher freigeben. Der interne Puffer- oder Schnittstellenverweis wird freigegeben, wenn FreePrivateData aufgerufen wird. Dies geschieht automatisch, wenn die Oberfläche freigegeben wird.
Um private Daten für eine Oberfläche abzurufen, müssen Sie einen Puffer der richtigen Größe zuweisen und dann die GetPrivateData-Methode aufrufen und die GUID übergeben, die den Daten zugewiesen wurde. Sie sind dafür verantwortlich, jeden dynamischen Speicher freizugeben, den Sie für diesen Puffer verwenden. Wenn es sich bei den Daten um ein COM-Objekt handelt, ruft diese Methode den IUnknown Zeiger ab.
Wenn Sie nicht wissen, wie groß ein Puffer zuzuordnen ist, rufen Sie zuerst GetPrivateData mit Null in "pSizeOfData" auf. Wenn die Methode mit D3DERR_MOREDATA fehlschlägt, wird die erforderliche Anzahl von Bytes für den Puffer zurückgegeben.
Verwandte Themen