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 |