次の方法で共有


IDirect3DResource9::SetPrivateData

Direct3D ではなくアプリケーションによって使用されるリソースとデータを関連付けます。データは値によって渡され、単一のリソースに複数セットのデータを関連付けることができます。

HRESULT 
SetPrivateData(
  REFGUID refguid,
  CONST void * pData,
  DWORD SizeOfData,
  DWORD Flags
);

パラメータ

  • refguid
    設定対象のプライベート データを指すグローバル一意識別子への参照。
  • pData
    リソースと関連付けるデータが含まれるバッファーへのポインター。
  • SizeOfData
    pData によって示されるバッファーのサイズ (バイト単位)。
  • Flags
    渡されるデータの型を示す値、またはリソースの変更時にデータを無効化する必要があることをアプリケーションに示す値。
    • (なし)
      フラグを 1 つも指定しないと、バッファー内のデータを格納するためのメモリーが割り当てられ、そのデータが新しいバッファーにコピーされます。Direct3D によって割り当てられたバッファーは、必要に応じて自動的に解放されます。
    • D3DSPD_IUNKNOWN
      pData が示すデータは、IUnknown インターフェイスへのポインターです。SizeOfData には、IUnknown へのポインターのサイズ、つまり sizeof(IUnknown*) を設定する必要があります。Direct3D は、プライベート データの破棄時、pData を介して IUnknown を自動的に呼び出します。プライベート データは、IDirect3DResource9::SetPrivateData(同じ GUID を指定) を次に呼び出したとき、IDirect3DResource9::FreePrivateData を次に呼び出したとき、または IDirect3D9 オブジェクトが解放されたときに破棄されます。詳細については、「解説」を参照してください。

戻り値

メソッドが成功した場合は、D3D_OK を返します。失敗した場合は、次の戻り値のいずれかを返します。D3DERR_INVALIDCALL、E_OUTOFMEMORY

解説 

Direct3D は、pData のメモリーを管理しません。このバッファーが動的に割り当てられた場合、そのメモリーを解放するのは呼び出し側アプリケーションの責任です。

要件

ヘッダー: D3D9.h 宣言

ライブラリ: D3D9.lib 内容