Private Surface Data (Direct3D 9)
S povrchem můžete ukládat libovolná data specifická pro konkrétní aplikace. Například povrch představující mapu ve hře může obsahovat informace o terénu.
Povrch může mít více než jednu privátní datovou vyrovnávací paměť. Každá vyrovnávací paměť je identifikována identifikátorem GUID, který zadáte při připojování dat k povrchu.
Pokud chcete ukládat data privátního povrchu, použijte SetPrivateData, předání ukazatele na zdrojovou vyrovnávací paměť, velikost dat a identifikátor GUID definovaný aplikací pro data. Volitelně mohou zdrojová data existovat ve formě objektu COM; v tomto případě předáte ukazatel na objekt IUnknown ukazatel rozhraní a nastavíte příznak D3DSPD_IUNKNOWNPOINTER.
SetPrivateData přidělí interní vyrovnávací paměť pro data a zkopíruje je. Pak můžete bezpečně uvolnit zdrojovou vyrovnávací paměť nebo objekt. Při zavolání FreePrivateData se uvolní odkaz na interní vyrovnávací paměť nebo rozhraní. K tomu dochází automaticky při uvolnění povrchu.
Chcete-li načíst privátní data pro povrch, musíte přidělit vyrovnávací paměť správné velikosti a potom volat GetPrivateData metoda, která předává identifikátor GUID, který byl přiřazen k datům. Zodpovídáte za uvolnění jakékoli dynamické paměti, kterou pro tuto vyrovnávací paměť používáte. Pokud jsou data objektem COM, tato metoda načte IUnknown ukazatel.
Pokud nevíte, jak velký vyrovnávací paměť přidělit, nejprve zavolejte GetPrivateData s nulou v pSizeOfData. Pokud metoda selže s D3DERR_MOREDATA, vrátí potřebný počet bajtů pro vyrovnávací paměť.
Související témata