Private Surface-adatok (Direct3D 9)
Bármilyen alkalmazásspecifikus adatot tárolhat egy felülettel. Egy térképet ábrázoló felület például tartalmazhat a terepre vonatkozó információkat.
Egy felület több privát adatpufferrel is rendelkezhet. Minden puffert egy GUID azonosít, amelyet az adatok felszínhez való csatlakoztatásakor ad meg.
Privát felületi adatok tárolásához használja a SetPrivateData-t, mutasson a forráspufferre, az adatok méretére és az adatok alkalmazás által definiált GUID-jára. Igény szerint a forrásadatok COM-objektum formájában is létezhetnek; ebben az esetben egy mutatót ad át az objektum IUnknown felület mutatójának, és beállítja a D3DSPD_IUNKNOWNPOINTER jelzőt.
A SetPrivateData lefoglal egy belső puffert az adatokhoz, és átmásolja azokat. Ezután biztonságosan felszabadíthatja a forráspuffert vagy objektumot. A freePrivateData meghívásakor a belső puffer vagy interfész referenciája felszabadul. Ez automatikusan megtörténik a felület felszabadításakor.
A felület titkos adatainak lekéréséhez ki kell foglalnia egy megfelelő méretű puffert, majd meg kell hívnia a GetPrivateData metódust, átadva az adatokhoz rendelt GUID azonosítót. Ön a felelős a pufferhez használt dinamikus memória felszabadításáért. Ha az adatok COM-objektumok, ez a metódus lekéri a IUnknown mutatót.
Ha nem tudja, mekkora puffert kell lefoglalni, először hívja meg a GetPrivateData-t nullával a pSizeOfData fájlban. Ha a metódus D3DERR_MOREDATA meghiúsul, a pufferhez szükséges bájtszámot adja vissza.
Kapcsolódó témakörök