IDirect3DResource9::SetPrivateData 方法 (d3d9helper.h)

将数据与供应用程序而不是 Direct3D 使用的资源相关联。 数据按值传递,多个数据集可与单个资源关联。

语法

HRESULT SetPrivateData(
  [in] REFGUID    refguid,
  [in] const void *pData,
  [in] DWORD      SizeOfData,
  [in] DWORD      Flags
);

参数

[in] refguid

类型: REFGUID

对标识要设置的私有数据的全局唯一标识符的引用。

[in] pData

类型: const void*

指向缓冲区的指针,该缓冲区包含要与资源关联的数据。

[in] SizeOfData

类型: DWORD

pData 上的缓冲区大小(以字节为单位)。

[in] Flags

类型: DWORD

描述要传递的数据类型或向应用程序指示在资源更改时数据应失效的值。

说明
(无) 如果未指定任何标志,Direct3D 会分配内存来保存缓冲区中的数据,并将数据复制到新缓冲区。 Direct3D 分配的缓冲区会根据需要自动释放。
D3DSPD_IUNKNOWN pData 中的数据是指向 IUnknown 接口的 指针。 SizeOfData 必须设置为指向 IUnknown 的指针的大小,即 size of (IUnknown*) 。 当私有数据被销毁时,Direct3D 通过 pData 自动调用IUnknown。 使用相同 GUID 对 IDirect3DResource9::SetPrivateData 的后续调用、对 IDirect3DResource9::FreePrivateData 的后续调用或释放 IDirect3D9 对象时,将销毁私有数据。 有关详细信息,请参阅“备注”。

返回值

类型: HRESULT

如果方法成功,则返回值D3D_OK。 如果方法失败,则返回值可以是以下值之一:D3DERR_INVALIDCALL、E_OUTOFMEMORY。

注解

Direct3D 不管理 pData 上的内存。 如果此缓冲区是动态分配的,则调用应用程序负责释放内存。

要求

要求
目标平台 Windows
标头 d3d9helper.h (包括 D3D9.h)
Library D3D9.lib

另请参阅

IDirect3DResource9