私人 Surface 數據 (Direct3D 9)
您可以使用介面來儲存任何類型的應用程式特定數據。 例如,在遊戲中代表地圖的介面可能包含地形的相關信息。
介面可以有多個私人數據緩衝區。 每個緩衝區都會由您在將數據附加至介面時所提供的 GUID 來識別。
若要儲存私人介面數據,請使用 SetPrivateData,將指標傳遞至來源緩衝區、數據大小,以及數據的應用程式定義 GUID。 或者,源數據可以以 COM 物件的形式存在;在此情況下,您會將指標傳遞至物件的 IUnknown 介面指標,並設定D3DSPD_IUNKNOWNPOINTER旗標。
SetPrivateData 會為數據配置內部緩衝區,並複製它。 然後,您可以安全地釋放來源緩衝區或物件。 呼叫 FreePrivateData 時,會釋放內部緩衝區或介面參考。 這會在釋放表面時自動發生。
若要擷取介面的私人數據,您必須配置大小正確的緩衝區,然後呼叫 GetPrivateData 方法,傳遞指派給數據的 GUID。 您必須負責釋放用於此緩衝區的任何易失記憶體。 如果數據是 COM 對象,這個方法會擷取 IUnknown 指標。
如果您不知道要配置多少緩衝區,請先呼叫 pSizeOfData 中為零的 GetPrivateData。 如果方法因D3DERR_MOREDATA而失敗,它會傳回緩衝區的必要位元元組數目。
相關主題