アプリケーションは、Microsoft® Direct3D®保持モードオブジェクトのスーパークラスとやりとりするために、IDirect3DRMObjectインターフェイスのメソッドを使用する。
Direct3DRMObjectは、システム中のすべてのオブジェクトの共通スーパークラスである。Direct3DRMObjectオブジェクトには、すべてのオブジェクトに共通する特性がある。
各Direct3DRMObjectオブジェクトは、COMオブジェクトとしてインスタンス化される。IUnknownインターフェイスのメソッドに加えて、各オブジェクトにはすべてに共通なメソッドの標準セットがある。
オブジェクトを作成するには、アプリケーションは、最初に、Direct3DRMCreate関数を呼び出すことでDirect3D保持モードオブジェクトをインスタンス化しなければならない。次に、アプリケーションは、オブジェクトを作成するオブジェクトのインターフェイスメソッドを呼び出し、オブジェクトに固有のパラメータを指定する。たとえば、Direct3DRMAnimationオブジェクトを作成するには、アプリケーションはIDirect3DRM3::CreateAnimationメソッドを呼び出すことになる。次に、作成メソッドは新しいオブジェクトを作成し、パラメータ中で (その他すべてはデフォルト値のまま) 渡されるデータのオブジェクト属性のいくつかを初期化し、オブジェクトを返す。次に、アプリケーションは、このオブジェクトのインターフェイスを指定し、オブジェクトの修正と使用を行える。
任意のオブジェクトは、アプリケーション固有データの32ビットを格納することができる。このデータを保持モードで解釈または変更できない。アプリケーションは、IDirect3DRMObject::GetAppDataメソッドを使用してこのデータを読み込み、IDirect3DRMObject::SetAppDataメソッドを使用してこのデータに書き込みすることができる。アプリケーションがDirect3DRMFrameの各オブジェクトの構造体を保持していれば、このデータの検索は簡単になる。たとえば、IDirect3DRMFrame3::GetParentメソッドの呼び出しでDirect3DRMFrameオブジェクトを取得する場合、アプリケーションはそのプライベート構造体へのポインタを使用して、データを簡単に取り出し、時間のかかる検索を避けることができる。
アプリケーションを編成する支援のために、またはアプリケーションのユーザインターフェイスの一部として、「名前」をオブジェクトに割り当てたい場合もあると思われる。IDirect3DRMObject::SetNameとIDirect3DRMObject::GetNameメソッドを使用して、オブジェクト名をセットし、取得することができる。
アプリケーション固有データの可能な用途のもう1つの例は、アプリケーションでメッシュ内の面をサブセット (たとえば、前面と後面) にグループ化する必要がある場合である。面の中のアプリケーションデータを使用して、面をこれらのグループのどこに入れるかを注記することができる。
アプリケーションでは、オブジェクトが破棄された場合に呼び出す関数を指定することができる。たとえば、アプリケーションでオブジェクトに関連付けられたメモリの割り当て解除を行う必要がある場合などである。このためには、IDirect3DRMObject::AddDestroyCallbackメソッドを使用する。このメソッドで以前に登録した関数を削除するには、IDirect3DRMObject::DeleteDestroyCallbackメソッドを使用する。
コールバック関数は、オブジェクトが破棄された場合にのみ呼び出される。すなわち、オブジェクトの参照カウントが0になり、システムがオブジェクトのメモリの割り当てを解除しようとする場合である。アプリケーションがオブジェクトに関する追加データを保持している場合 (たとえば、ダイナミックスをインプリメントするために)、アプリケーションはデータの処理が可能であることを自分自身に通知する手段として、このコールバック関数を使用することができる。
オブジェクトのグループ化については、「IDirect3DRMObjectArray」を参照すること。
IDirect3DRMObjectインターフェイスのメソッドは、以下のグループにまとめることができる。
アプリケーション固有の | GetAppData |
データ | SetAppData |
複製 | Clone |
名前 | GetClassName |
GetName | |
SetName | |
通知 | AddDestroyCallback |
DeleteDestroyCallback |
すべてのCOMインターフェイスと同様、IDirect3DRMObjectインターフェイスはIUnknownインターフェイスメソッドを継承する。IUnknownインターフェイスは、以下の3つのメソッドをサポートする。
AddRef |
QueryInterface |
Release |
Direct3DRMObjectオブジェクトは、適切なQueryInterfaceメソッドを呼び出すことにより、どの保持モードオブジェクトからでも取得することができる。すべての保持モードオブジェクトは、IDirect3DRMObjectインターフェイスメソッドを継承する。
オブジェクトが破棄されるときに呼び出される関数を登録する。
構文
HRESULT AddDestroyCallback(
D3DRMOBJECTCALLBACK lpCallback,
LPVOID lpArg
);
パラメータ
- lpCallback
- オブジェクトが破棄されるときに使われる、ユーザ定義のコールバック関数。
- lpArg
- コールバック関数に渡されたアプリケーション定義データのアドレス。この関数はオブジェクトが破棄された後に使われるため、引数としてオブジェクトを渡してはならない。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。エラーのリストについては、「Direct3D保持モードの戻り値」を参照すること。
オブジェクトの複製を作成する。
構文
HRESULT Clone(
LPUNKNOWN pUnkOuter,
REFIID riid,
LPVOID *ppvObj
);
パラメータ
- pUnkOuter
- COM集合化を可能にする外部IUnknownインターフェイスへのポインタ。
- riid
- 複製するオブジェクトの識別子。
- ppvObj
- メソッドが制御を返すとき、オブジェクトの複製を格納するアドレス。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。エラーのリストについては、「Direct3D保持モードの戻り値」を参照すること。
IDirect3DRMObject::AddDestroyCallbackメソッドによって登録された関数を削除する。
構文
HRESULT DeleteDestroyCallback(
D3DRMOBJECTCALLBACK d3drmObjProc,
LPVOID lpArg
);
パラメータ
- d3drmObjProc
- オブジェクトが破棄されるときに使われる、ユーザ定義のD3DRMOBJECTCALLBACKコールバック関数。
- lpArg
- コールバック関数に渡されたアプリケーション定義データのアドレス。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。エラーのリストについては、「Direct3D保持モードの戻り値」を参照すること。
オブジェクトから、アプリケーション固有の32ビットデータを取得する。データのデフォルト値は0である。
構文
DWORD GetAppData( );
戻り値
アプリケーションによって定義されたデータ値を返す。
参照
オブジェクトのクラス名を取得する。
構文
HRESULT GetClassName(
LPDWORD lpdwSize,
LPSTR lpName
);
パラメータ
- lpdwSize
- lpNameパラメータが示すバッファのサイズがバイト単位で入る変数のアドレス。
- lpName
- メソッドが制御を返すとき、クラス名を示すNULLで終わる文字列のアドレス。このパラメータがNULLの場合、lpdwSizeパラメータには文字列に必要なサイズが設定される。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。エラーのリストについては、「Direct3D保持モードの戻り値」を参照すること。
オブジェクト名を取得する。
構文
HRESULT GetName(
LPDWORD lpdwSize,
LPSTR lpName
);
パラメータ
- lpdwSize
- lpNameパラメータが示すバッファのサイズがバイト単位で入る変数のアドレス。
- lpName
- メソッドが制御を返すとき、オブジェクトの名前を示すNULLで終わる文字列のアドレス。このパラメータがNULLの場合、lpdwSizeパラメータには文字列に必要なサイズが設定される。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。エラーのリストについては、「Direct3D保持モードの戻り値」を参照すること。
参照
オブジェクトにアプリケーション固有の32ビットデータを設定する。
構文
HRESULT SetAppData(
DWORD ulData
);
パラメータ
- ulData
- オブジェクトに格納されるユーザ定義のデータ。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。エラーのリストについては、「Direct3D保持モードの戻り値」を参照すること。
参照
オブジェクトの名前を設定する。
構文
HRESULT SetName(
const char *lpName
);
パラメータ
- lpName
- オブジェクトの名前を示すユーザ定義のデータ。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。エラーのリストについては、「Direct3D保持モードの戻り値」を参照すること。
参照
トップに戻る
© 1999 Microsoft and/or its suppliers. All rights reserved. Terms of Use.