共用方式為


私人 Surface Data (Direct3D 9)

您可以使用表面來儲存任何類型的應用程式特定資料。 例如,代表遊戲中地圖的表面可能包含地形的相關資訊。

表面可以有一個以上的私人資料緩衝區。 每個緩衝區都是由您在將資料附加至表面時所提供的 GUID 來識別。

若要儲存私人表面資料,請使用 SetPrivateData,將指標傳遞至來源緩衝區、資料大小,以及資料的應用程式定義 GUID。 選擇性地,來源資料可以以 COM 物件的形式存在;在此情況下,您會將指標傳遞至物件的 IUnknown 介面指標,並設定D3DSPD_IUNKNOWNPOINTER旗標。

SetPrivateData 會配置資料的內部緩衝區,並複製它。 然後,您可以安全地釋放來源緩衝區或物件。 呼叫 FreePrivateData 時,會釋放內部緩衝區或介面參考。 這會在釋放表面時自動發生。

若要擷取表面的私人資料,您必須配置大小正確的緩衝區,然後呼叫 GetPrivateData 方法,並傳遞指派給資料的 GUID。 您必須負責釋放您用於此緩衝區的任何動態記憶體。 如果資料是 COM 物件,這個方法會擷取 IUnknown 指標。

如果您不知道要配置的緩衝區大小,請先在 pSizeOfData 中以零呼叫 GetPrivateData。 如果方法因D3DERR_MOREDATA而失敗,則會傳回緩衝區的必要位元組數目。

Direct3D 表面