C++コールバック関数

Microsoft® Direct3D® 保持モードのC++コールバック関数は次の通りである。

D3DRMDEVICE3UPDATECALLBACK

デバイスが変更されたときはアプリケーションに警告する。このコールバック関数の実体はアプリケーション定義である。

構文

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

D3DRMDOWNSAMPLECALLBACK

ビデオメモリがオーバーロードし、テクスチャサーフェスのサイズを削減する必要があるときに呼び出される。Direct3D保持モードでは、DirectDrawブロック転送と双一次フィルタリングなどのテクスチャサイズを削減するデフォルトのメソッドが提供されるが、ユーザは、独自のメソッドを定義して、このコールバック関数でテクスチャサイズをスケールダウンすることができる。このコールバック関数の実体はアプリケーションで定義される。

構文

HRESULT (*D3DRMDOWNSAMPLECALLBACK)(
  LPDIRECT3DRMTEXTURE3 lpDirect3DRMTexture,
  LPVOID lpArg,
  LPDIRECTDRAWSURFACE pDDSSrc,
  LPDIRECTDRAWSURFACE pDDSDst);

パラメータ

lpDirect3DRMTexture
コールバック関数を適用するDirect3DRMTexture3オブジェクトへのポインタのアドレス。
lpArg
コールバック関数に渡されるアプリケーション定義のデータへのポインタのアドレス。
pDDSSrc
システムメモリプロトタイプサーフェスへのポインタ。
pDDSDst
スケールダウンされたサーフェスへのポインタ。

戻り値

なし。

注意

D3DRMDOWNSAMPLECALLBACKは、DirectX version 6.0とともに導入された。

参照

IDirect3DRMTexture3::SetDownsampleCallback

D3DRMFRAME3MOVECALLBACK

フレームの移動や更新時に、アプリケーションがカスタマイズしたアルゴリズムを適用できるようにする。フレームレートを変更するためにこのコールバック関数を使用することができる。このコールバック関数の実体はアプリケーションで定義される。

構文

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オブジェクトをとることだけである。

D3DRMLOADCALLBACK

IDirect3DRM3::Loadメソッド内部でオブジェクトのロードを行う。このコールバック関数の実体はアプリケーションで定義される。

構文

void (*D3DRMLOADCALLBACK)(
  LPDIRECT3DRMOBJECT lpObject,
  REFIID ObjectGuid,
  LPVOID lpArg);

パラメータ

lpObject
ロードされるDirect3DRMObjectへのポインタのアドレス。
ObjectGuid
ロードされるオブジェクトのグローバルユニーク識別子(GUID)。
lpArg
コールバック関数に渡されるアプリケーション定義のデータへのポインタのアドレス。

戻り値

なし。

注意

システムは、コールバック関数を使う順序を決定するため、まず階層のトップレベルにあるオブジェクトを検索する。次に、作成された順番にコールバック関数を使う。

参照

IDirect3DRM3::Load

D3DRMLOADTEXTURECALLBACK

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

D3DRMLOADTEXTURE3CALLBACK

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

D3DRMOBJECTCALLBACK

IDirect3DRM3::EnumerateObjectsメソッドの呼び出しに応答するオブジェクトを列挙する。このコールバック関数の実体はアプリケーション定義である。

構文

void (*D3DRMOBJECTCALLBACK)(
  LPDIRECT3DRMOBJECT lpD3DRMobj,
  LPVOID lpArg);

パラメータ

lpD3DRMobj
オブジェクトを列挙するIDirect3DRMObjectインターフェイスへのポインタ。アプリケーションは、列挙された各オブジェクトについてReleaseメソッドを呼び出さなくてはならない。
lpArg
コールバック関数に渡されるアプリケーション定義のデータへのポインタのアドレス。

戻り値

なし。

注意

システムは、コールバック関数を使う順序を決定するため、まず階層のトップレベルにあるオブジェクトを検索する。次に、作成された順番にコールバック関数を使う。

参照

IDirect3DRM3::EnumerateObjects

D3DRMUSERVISUALCALLBACK

ユーザビジュアルオブジェクトを提供するアプリケーションに、実行バッファを実行する必要があることを通知する。このコールバック関数の実体はアプリケーション定義である。

構文

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を返すのが安全である。

注意

アプリケーションがレンダリング状態を変更する場合、この関数から復帰する前にレンダリング状態を復元する必要がある。

システムは、コールバック関数を使う順序を決定するため、まず階層のトップレベルにあるオブジェクトを検索する。次に、作成された順番にコールバック関数を使う。

参照

IDirect3DRMUserVisual::Init, IDirect3DRM3::CreateUserVisual

D3DRMVALIDATIONCALLBACK

変更済であるが更新されていないことを意味する、無効のマークが付けられたテクスチャリージョンを更新する必要があるときに呼び出される。このコールバック関数の実体はアプリケーションで定義される。

構文

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とともに導入された。

参照

IDirect3DRMTexture3::SetValidationCallback

D3DRMWRAPCALLBACK

このコールバック関数はサポートされていない。

構文

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.