Microsoft® Direct3D® 保持モードのC++コールバック関数は次の通りである。
デバイスが変更されたときはアプリケーションに警告する。このコールバック関数の実体はアプリケーション定義である。
構文
void (*D3DRMDEVICE3UPDATECALLBACK)( LPDIRECT3DRMDEVICE3 lpobj, LPVOID lpArg, int iRectCount, LPD3DRECT d3dRectUpdate);
パラメータ
- lpobj
- コールバック関数を適用するDirect3DRMDevice3オブジェクトへのポインタのアドレス。
- lpArg
- コールバック関数に渡されるアプリケーション定義のデータへのポインタのアドレス。
- iRectCount
- d3dRectUpdateパラメータに指定された矩形の数。
- d3dRectUpdate
- 更新される領域を表す、1つ以上のD3DRECT構造体の配列。座標はデバイス単位で指定される。
戻り値
なし。
注意
システムは、コールバック関数を使う順序を決定するため、まず階層のトップレベルにあるオブジェクトを検索する。次に、作成された順番にコールバック関数を使う。
D3DRMDEVICE3UPDATECALLBACKはDirectX version 6.0で導入され、以前のD3DRMUPDATECALLBACKの差し替えである。この2つのコールバックの相違は、新規のコールバックがlpobjパラメータについてはDirect3DRMDeviceオブジェクトでなくDirect3DRMDevice3オブジェクトをとることだけである。
参照
IDirect3DRMDevice3::AddUpdateCallback, IDirect3DRMDevice3::DeleteUpdateCallback, IDirect3DRMDevice3::Update
ビデオメモリがオーバーロードし、テクスチャサーフェスのサイズを削減する必要があるときに呼び出される。Direct3D保持モードでは、DirectDrawブロック転送と双一次フィルタリングなどのテクスチャサイズを削減するデフォルトのメソッドが提供されるが、ユーザは、独自のメソッドを定義して、このコールバック関数でテクスチャサイズをスケールダウンすることができる。このコールバック関数の実体はアプリケーションで定義される。
構文
HRESULT (*D3DRMDOWNSAMPLECALLBACK)( LPDIRECT3DRMTEXTURE3 lpDirect3DRMTexture, LPVOID lpArg, LPDIRECTDRAWSURFACE pDDSSrc, LPDIRECTDRAWSURFACE pDDSDst);
パラメータ
- lpDirect3DRMTexture
- コールバック関数を適用するDirect3DRMTexture3オブジェクトへのポインタのアドレス。
- lpArg
- コールバック関数に渡されるアプリケーション定義のデータへのポインタのアドレス。
- pDDSSrc
- システムメモリプロトタイプサーフェスへのポインタ。
- pDDSDst
- スケールダウンされたサーフェスへのポインタ。
戻り値
なし。
注意
D3DRMDOWNSAMPLECALLBACKは、DirectX version 6.0とともに導入された。
参照
フレームの移動や更新時に、アプリケーションがカスタマイズしたアルゴリズムを適用できるようにする。フレームレートを変更するためにこのコールバック関数を使用することができる。このコールバック関数の実体はアプリケーションで定義される。
構文
void (*D3DRMFRAME3MOVECALLBACK)( LPDIRECT3DRMFRAME3 lpD3DRMFrame, LPVOID lpArg, D3DVALUE delta);
パラメータ
- lpD3DRMFrame
- 変更しようとしているDirect3DRMFrame3オブジェクトへのポインタのアドレス。
- lpArg
- コールバック関数に渡されるアプリケーション定義のデータへのポインタのアドレス。
- delta
- 運動に適用される変化量。フレームの位置を変更するには、直線と回転の2つの要素がある。各要素における変更は、velocity_of_component×deltaに等しい。これらの一方または両方の速度は、任意のフレームを起点として設定することができるが、システムは、自動的にデルタ時間を適用するので、親フレームを起点とした速度に変換する。
戻り値
なし。
注意
アプリケーションは、親フレームを基準にしてフレームの加速を合成することができる。そのためには、各ティックで、アプリケーションは、子フレームの速度をアプリケーション自身を基準とした(1ティックあたりaユニット)×1ティックに設定する必要がある。ここで、aは要求された加速度である。これは、ティック当たりのa×deltaに等しい。内部的には、子フレームを基準としたティック当たりのa×deltaは、親フレームを基準とした(v+(a×delta))ユニットに変換される。ここで、vは、親を基準とする子フレームの現在の速度である。
このコールバック関数を追加/削除するには、IDirect3DRMFrame3::AddMoveCallbackおよびIDirect3DRMFrame3::DeleteMoveCallbackメソッドを使用する。
システムは、コールバック関数を使う順序を決定するため、まず階層のトップレベルにあるオブジェクトを検索する。次に、作成された順番にコールバック関数を使う。
D3DRMFRAME3MOVECALLBACKは、DirectX version 6.0で導入され、旧のD3DRMFRAMEMOVECALLBACKを置換する。この2つのコールバックの相違は、新規のコールバックがlpD3DRMFrameパラメータについてはDirect3DRMFrameオブジェクトでなくDirect3DRMFrame3オブジェクトをとることだけである。
IDirect3DRM3::Loadメソッド内部でオブジェクトのロードを行う。このコールバック関数の実体はアプリケーションで定義される。
構文
void (*D3DRMLOADCALLBACK)( LPDIRECT3DRMOBJECT lpObject, REFIID ObjectGuid, LPVOID lpArg);
パラメータ
- lpObject
- ロードされるDirect3DRMObjectへのポインタのアドレス。
- ObjectGuid
- ロードされるオブジェクトのグローバルユニーク識別子(GUID)。
- lpArg
- コールバック関数に渡されるアプリケーション定義のデータへのポインタのアドレス。
戻り値
なし。
注意
システムは、コールバック関数を使う順序を決定するため、まず階層のトップレベルにあるオブジェクトを検索する。次に、作成された順番にコールバック関数を使う。
参照
Loadメソッドの内部で、テクスチャファイル(もしくはリソース)の実際の読み込みを行う。このコールバック関数の実体はアプリケーションで定義される。
構文
HRESULT (*D3DRMLOADTEXTURECALLBACK)( char *tex_name, void *lpArg, LPDIRECT3DRMTEXTURE *lpD3DRMTex);
パラメータ
- tex_name
- テクスチャ名へのポインタのアドレス。
- lpArg
- アプリケーション固有のデータへのポインタのアドレス。
- lpD3DRMTex
- Direct3DRMTextureオブジェクトへのポインタのアドレス。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。エラーのリストについては、「Direct3D保持モードの戻り値」を参照すること。
注意
正確な参照カウントを維持するには、テクスチャコールバックで作成されたテクスチャオブジェクト上のAddRefを呼び出す。
アプリケーションは、Microsoft® Windows®ビットマップ(.bmp)やポータブルピクセルマップビットマップ(.ppm)P6形式以外のテクスチャのサポートをインプリメントするため、このコールバック関数を使用することができる。P6フォーマットは、色イメージのバイナリファイルフォーマットである。
システムは、コールバック関数を使う順序を決定するため、まず階層のトップレベルにあるオブジェクトを検索する。次に、作成された順番にコールバック関数を使う。
参照
IDirect3DRM3::Load, IDirect3DRMAnimationSet2::Load, IDirect3DRMFrame3::Load, IDirect3DRMMeshBuilder3::Load
Loadメソッドの内部で、テクスチャファイル(もしくはリソース)の実際の読み込みを行う。このコールバック関数の実体はアプリケーションで定義される。
構文
HRESULT (*D3DRMLOADTEXTURE3CALLBACK)( char *tex_name, void *lpArg, LPDIRECT3DRMTEXTURE3 *lpD3DRMTex3);
パラメータ
- tex_name
- テクスチャ名へのポインタのアドレス。
- lpArg
- アプリケーション固有のデータへのポインタのアドレス。
- lpD3DRMTex3
- Direct3DRMTexture3オブジェクトへのポインタのアドレス。
戻り値
成功すればD3DRM_OKを返す。失敗すればエラーを返す。エラーのリストについては、「Direct3D保持モードの戻り値」を参照すること。
注意
正確な参照カウントを維持するには、テクスチャコールバックで作成されたテクスチャオブジェクト上のAddRefを呼び出す。
アプリケーションは、Microsoft® Windows®ビットマップ(.bmp)やポータブルピクセルマップビットマップ(.ppm)P6形式以外のテクスチャのサポートをインプリメントするため、このコールバック関数を使用することができる。P6フォーマットは、色イメージのバイナリファイルフォーマットである。
システムは、コールバック関数を使う順序を決定するため、まず階層のトップレベルにあるオブジェクトを検索する。次に、作成された順番にコールバック関数を使う。
参照
IDirect3DRM3::Load, IDirect3DRMAnimationSet2::Load, IDirect3DRMFrame3::Load, IDirect3DRMMeshBuilder3::Load
IDirect3DRM3::EnumerateObjectsメソッドの呼び出しに応答するオブジェクトを列挙する。このコールバック関数の実体はアプリケーション定義である。
構文
void (*D3DRMOBJECTCALLBACK)( LPDIRECT3DRMOBJECT lpD3DRMobj, LPVOID lpArg);
パラメータ
- lpD3DRMobj
- オブジェクトを列挙するIDirect3DRMObjectインターフェイスへのポインタ。アプリケーションは、列挙された各オブジェクトについてReleaseメソッドを呼び出さなくてはならない。
- lpArg
- コールバック関数に渡されるアプリケーション定義のデータへのポインタのアドレス。
戻り値
なし。
注意
システムは、コールバック関数を使う順序を決定するため、まず階層のトップレベルにあるオブジェクトを検索する。次に、作成された順番にコールバック関数を使う。
参照
ユーザビジュアルオブジェクトを提供するアプリケーションに、実行バッファを実行する必要があることを通知する。このコールバック関数の実体はアプリケーション定義である。
構文
int (*D3DRMUSERVISUALCALLBACK)( LPDIRECT3DRMUSERVISUAL lpD3DRMUV, LPVOID lpArg, D3DRMUSERVISUALREASON lpD3DRMUVreason, LPDIRECT3DRMDEVICE lpD3DRMDev, LPDIRECT3DRMVIEWPORT lpD3DRMview);
パラメータ
- lpD3DRMUV
- Direct3DRMUserVisualオブジェクトへのポインタのアドレス。
- lpArg
- コールバック関数に渡されるアプリケーション定義のデータへのポインタのアドレス。
- lpD3DRMUVreason
- D3DRMUSERVISUALREASON列挙型のメンバの1つ。
- D3DRMUSERVISUAL_CANSEE
- ユーザビジュアルオブジェクトがビューポート内で可視状態であれば、アプリケーションはTRUEを返す。この場合、アプリケーションは、lpD3DRMviewパラメータで指定されたデバイスを使用する。
- D3DRMUSERVISUAL_RENDER
- アプリケーションは、ユーザビジュアルエレメントをレンダリングしなくてはならない。この場合、アプリケーションは、lpD3DRMDevパラメータで指定されたデバイスを使う。
- lpD3DRMDev
- Direct3DRMUserVisualオブジェクトをレンダリングするために使われるDirect3DRMDeviceオブジェクトへのポインタのアドレス。
- lpD3DRMview
- Direct3DRMUserVisualオブジェクトが可視状態かどうかを決定するために使われるDirect3DRMViewportオブジェクトへのポインタのアドレス。
戻り値
lpD3DRMUVreasonパラメータにD3DRMUSERVISUAL_CANSEEが指定され、ユーザビジュアルオブジェクトがビューポート内で可視状態の場合はTRUEを返す。そうでない場合はFALSEを返す。lpD3DRMUVreasonパラメータにD3DRMUSERVISUAL_RENDERが指定されている場合はアプリケーション定義の戻り値となる。この場合、つねにTRUEを返すのが安全である。
注意
アプリケーションがレンダリング状態を変更する場合、この関数から復帰する前にレンダリング状態を復元する必要がある。
システムは、コールバック関数を使う順序を決定するため、まず階層のトップレベルにあるオブジェクトを検索する。次に、作成された順番にコールバック関数を使う。
参照
変更済であるが更新されていないことを意味する、無効のマークが付けられたテクスチャリージョンを更新する必要があるときに呼び出される。このコールバック関数の実体はアプリケーションで定義される。
構文
HRESULT (*D3DRMVALIDATIONCALLBACK)( LPDIRECT3DRMTEXTURE3 lpDirect3DRMTexture, LPVOID lpArg, DWORD dwFlags, DWORD dwcRects, LPRECT pRects);
パラメータ
- lpDirect3DRMTexture
- コールバック関数を適用するDirect3DRMTexture3オブジェクトへのポインタのアドレス。
- lpArg
- コールバック関数に渡されるアプリケーション定義のデータへのポインタのアドレス。
- dwFlags
- 使わない。0にすること
- dwcRects
- pRectsパラメータに指定された矩形の数。
- pRects
- 更新される領域を表す、1つ以上のRECT構造体の配列。座標はデバイス単位で指定される。
戻り値
なし。
注意
Direct3D保持モードに対して、テクスチャリージョンの変更を通知するが、その変更を保留する場合、リージョンは無効であると宣言し、リージョンをpRectsが指す配列に格納することができる。その後、テクスチャが必要になれば、このコールバック関数を呼び出し、アプリケーションにテクスチャリージョンを更新することを通知する。
D3DRMVALIDATIONCALLBACKは、DirectX version 6.0とともに導入された。
参照
このコールバック関数はサポートされていない。
構文
void (*D3DRMWRAPCALLBACK)( LPD3DVECTOR lpD3DVector, int *lpU, int *lpV, LPD3DVECTOR lpD3DRMVA, LPD3DVECTOR lpD3DRMVB, LPVOID lpArg);
トップに戻る
© 1999 Microsoft and/or its suppliers. All rights reserved. Terms of Use.