IDirect3DResource9::SetPrivateData 方法 (d3d9.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 的指针的大小,即 sizeof (IUnknown*) 。 当私有数据被销毁时,Direct3D 会自动通过 pData 调用IUnknown。 使用相同 GUID 对 IDirect3DResource9::SetPrivateData 的后续调用、对 IDirect3DResource9::FreePrivateData 的后续调用或释放 IDirect3D9 对象时,将销毁专用数据。 有关详细信息,请参阅“备注”。

返回值

类型: HRESULT

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

注解

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

要求

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

另请参阅

IDirect3DResource9