アプリケーションは、IDirect3DRM3インターフェイスを使用してDirect3DRM3オブジェクトを生成し、システムレベル変数に従って動作する。Direct3D保持モードインターフェイスの履歴については、「インターフェイスの変更点」を参照すること。
IDirect3DRM3、IDirect3DRM2、およびIDirect3DRMインターフェイスのメソッドは、次のオブジェクトを作成する。
- アニメーションとアニメーションセット
- クリップビジュアル
- デバイス
- 面
- フレーム
- 汎非初期化オブジェクト
- 照明
- マテリアル
- メッシュとメッシュビルダ
- 影
- テクスチャ
- ユーザビジュアル
- ビューポート
- ラップ
Microsoft DirectX version 6.0は、IDirect3DRM3インターフェイスを導入している。IDirect3DRM3は、IDirect3DRM2とIDirect3DRMインターフェイスが提供するすべてのメソッドをサポートし、これら2つの旧インターフェイスを置換する。これは、フラグパラメータをIDirect3DRM2のCreateDeviceFromSurfaceに追加し、RegisterClient、UnregisterClientおよびCreateClippedVisualメソッドをIDirect3DRM2が提供するメソッドに追加する。IDirect3DRM3は、左手または右手ジオメトリのどちらを使用するかをセットし取り出すGetOptionsとSetOptionsメソッドも追加する。
IDirect3DRM3は、IDirect3DRM2と同様にIDirect3DRM中のすべてのメソッドをサポートする。これは、CreateProgressiveMeshメソッドをIDirect3DRMが提供するメソッドに追加する。CreateDeviceFromSurface、CreateDeviceFromD3DおよびCreateDeviceFromClipperメソッドはすべて、IDirect3DRM2によって DIRECT3DRMDEVICE2オブジェクトを作成し、IDirect3DRM3によって DIRECT3DRMDEVICE3オブジェクトを作成する。CreateViewportメソッドは、DirectDRMDevice2オブジェクト上にビューポートを作成する。LoadTextureとLoadTextureFromResourceメソッドは、IDirect3DRM2によって Direct3DRMTexture2オブジェクトをロードし、IDirect3DRM3によって Direct3DRMTexture3オブジェクトをロードする。
IDirect3DRM3またはIDirect3DRM2 COM (Component Object Model) インターフェイスにアクセスするには、Direct3DRMCreateによってIDirect3DRMオブジェクトを作成し、次にIDirect3DRMからそれぞれIDirect3DRM3またはIDirect3DRM2を照会する。また、CoCreateInstanceを直接使用してメインのDirect3D保持モードオブジェクトにアクセスすることができる。
IDirect3DRM3インターフェイスを使用して MeshBuilderオブジェクトを作成すると、MeshBuilderは、そのインプリメンテーションに直接モードのDrawPrimitiveインターフェイスを使用する。
IDirect3DRM3インターフェイスを使用して照明を作成すると、照明は最新の直接モード機能を活用し、D3DLIGHT2構造体を使用することになる。
アプリケーションはIDirect3DRMDevice3、IDirect3DRMDevice2、IDirect3DRMDeviceインターフェイスを使用して出力デバイスと会話する。IDirect3DRM3、IDirect3DRM2またはIDirect3DRMインターフェイスを使用して作成する際の出力デバイス機能の詳細については、「IDirect3DRMDevice3」を参照すること。出力デバイスの概要については、「出力デバイス」を参照すること。
IDirect3DRM3インターフェイスのメソッドは、以下のグループにまとめることができる。
アニメーション | CreateAnimation |
CreateAnimationSet | |
アプリケーション固有のデータ | RegisterClient |
UnregisterClient | |
クリップビジュアル | CreateClippedVisual |
デバイス | CreateDevice |
CreateDeviceFromClipper | |
CreateDeviceFromD3D | |
CreateDeviceFromSurface | |
GetDevices | |
列挙 | EnumerateObjects |
面 | CreateFace |
フレーム | CreateFrame |
照明 | CreateLight |
CreateLightRGB | |
マテリアル | CreateMaterial |
メッシュ | CreateMesh |
CreateMeshBuilder | |
その他 | CreateObject |
CreateUserVisual | |
GetNamedObject | |
GetOptions | |
Load | |
SetOptions | |
Tick | |
プログレッシブメッシュ | CreateProgressiveMesh |
パス検索 | AddSearchPath |
GetSearchPath | |
SetSearchPath | |
影 | CreateShadow |
テクスチャ | CreateTexture |
CreateTextureFromSurface | |
LoadTexture | |
LoadTextureFromResource | |
SetDefaultTextureColors | |
SetDefaultTextureShades | |
ビューポート | CreateViewport |
ラップ | CreateWrap |
すべてのCOMインターフェイスと同様、IDirect3DRM3インターフェイスは、IUnknownインターフェイスメソッドを継承する。IUnknownインターフェイスは次の3つのメソッドをサポートする。
AddRef |
QueryInterface |
Release |
現在のファイル検索パスの最後にディレクトリのリストを追加する。
構文
HRESULT AddSearchPath(
LPCSTR lpPath
);
パラメータ
- lpPath
- 現在の検索パスに追加するパスを指定するヌル終端文字列のアドレス。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。
注意
Microsoft® Windows®では、パスは、セミコロン(;)で区切られたリストにする必要がある。
参照
空のDirect3DRMAnimationオブジェクトを生成する。
構文
HRESULT CreateAnimation(
LPDIRECT3DRMANIMATION2 *lplpD3DRMAnimation
);
パラメータ
- lplpD3DRMAnimation
- 呼び出しが成功した場合、IDirect3DRMAnimation2インターフェイスへのポインタがセットされるアドレス。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。
空のDirect3DRMAnimationSetオブジェクトを作成する。
構文
HRESULT CreateAnimationSet (
LPDIRECT3DRMANIMATIONSET2 *lplpD3DRMAnimationSet
);
パラメータ
- lplpD3DRMAnimationSet
- 呼び出しが成功すれば、IDirect3DRMAnimationSet2インターフェイスへのポインタがセットされるアドレス。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。
クリップビジュアルオブジェクトを作成する。
構文
HRESULT CreateClippedVisual( LPDIRECT3DRMVISUAL lpVisual, LPDIRECT3DRMCLIPPEDVISUAL *lpClippedVisual);
パラメータ
- lpVisual
- メッシュビルダオブジェクトなどのビジュアルオブジェクトへのポインタ。
- lpClippedVisual
- 作成されたIDirect3DRMClippedVisualクリップビジュアルオブジェクトを受け取るポインタ。
戻り値
次の値のうち1つを返す。
DDERR_INVALIDOBJECT DDERR_INVALIDPARAMS DD_OK
注意
このメソッドは、DirectX version 6.0とともに導入された。
Windowsプラットフォームでは未実装である。
構文
HRESULT CreateDevice(
DWORD dwWidth,
DWORD dwHeight,
LPDIRECT3DRMDEVICE3 *lplpD3DRMDevice
);
指定されたDirectDrawClipperオブジェクトを使用してDirect3D保持モードWindowsデバイスを生成する。
構文
HRESULT CreateDeviceFromClipper(
LPDIRECTDRAWCLIPPER lpDDClipper,
LPGUID lpGUID,
int width,
int height,
LPDIRECT3DRMDEVICE3 *lplpD3DRMDevice
);
パラメータ
- lpDDClipper
- DirectDrawClipperオブジェクトのアドレス。
- lpGUID
- グローバルユニーク識別子(GUID)のアドレス。このパラメータはNULLにできる。
- width, height
- 作成すべきデバイスの幅と高さ。
- lplpD3DRMDevice
- 呼び出しが成功した場合、IDirect3DRMDevice3インターフェイスへのポインタがセットされるアドレス。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。
注意
lpGUIDパラメータがNULLの場合、システムは、デバイス性能のデフォルトセットを検索する。これは、保持モードデバイスを生成する方法として推奨する。なぜなら、ユーザが新しいハードウェアをインストールした場合でも、常に機能するからである。
システムは、内部デバイス列挙の呼び出しで、D3DPRIMCAPS構造体からの以下のフラグを使用して、デフォルト設定値を記述する。
ハードウェアデイバスが検出されなかった場合には、モノクロ(ランプ)のソフトウェアドライバがロードされる。特別な要件があって、デフォルト設定値のこのリストでは満足できない場合、アプリケーションは、lpGUIDに対してNULLを指定する代わりにデバイスを列挙する必要がある。
デバイスについての詳細は、「出力デバイス」および「IDirect3DRMDevice3」を参照すること。
指定されたDirect3Dオブジェクトを使用して、Direct3D保持モードWindowsデバイスを生成する。
構文
HRESULT CreateDeviceFromD3D(
LPDIRECT3D2 lpD3D,
LPDIRECT3DDEVICE2 lpD3DDev,
LPDIRECT3DRMDEVICE3 *lplpD3DRMDevice
);
パラメータ
- lpD3D
- Direct3D直接モードDirect3D2オブジェクトのインスタンスへのポインタ。
- lpD3DDev
- Direct3D直接モードDirect3DDevice2オブジェクトへのポインタ。
- lplpD3DRMDevice
- 呼び出しが成功した場合、IDirect3DRMDevice3インターフェイスへのポインタがセットされるアドレス。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。
注意
デバイスについての詳細は、「出力デバイス」および「IDirect3DRMDevice3」を参照すること。
指定されたDirectDrawサーフェスからレンダリングするためのDirect3D保持モードWindowsデバイスを生成する。
構文
HRESULT CreateDeviceFromSurface( LPGUID lpGUID, LPDIRECTDRAW lpDD, LPDIRECTDRAWSURFACE lpDDSBack, DWORD dwFlags, LPDIRECT3DRMDEVICE3 *lplpD3DRMDevice);
パラメータ
- lpGUID
- 要求されたデバイスドライバとして使用されるグローバルユニーク識別子(GUID)のアドレス。このパラメータがNULLの場合、デフォルトのデバイスドライバが使用される。
- lpDD
- DirectDrawサーフェスのソースであるDirectDrawオブジェクトのアドレス。
- lpDDSBack
- バックバッファを表すDirectDrawSurfaceオブジェクトのアドレス。
- dwFlags
- 現在定義されている唯一のフラグは、次の通りである。
- D3DRMDEVICE_NOZBUFFER
- lpDDSBackパラメータにzバッファがアタッチされていなければ、zバッファが作成されないことを示す。デフォルトでは、zバッファが作成される。
- lplpD3DRMDevice
- 呼び出しが成功した場合、IDirect3DRMDevice3インターフェイスへのポインタがセットされるアドレス。
戻り値
次の値のうち1つを返す。
DDERR_INVALIDOBJECT DDERR_INVALIDPARAMS DDERR_OUTOFMEMORY DD_OK
注意
このメソッドは、DirectX version 6.0とともに導入された。このメソッドは、dwFlagsパラメータを、それが置換する旧のIDirect3DRM2::CreateDeviceFromSurfaceメソッドに追加する。
デバイスについての詳細は、「出力デバイス」および「IDirect3DRMDevice3」を参照すること。
IDirect3DRMFace2インターフェイスのインスタンスを生成する。
構文
HRESULT CreateFace(
LPDIRECT3DRMFACE2 *lplpd3drmFace2
);
パラメータ
- lplpd3drmFace2
- 呼び出しが成功した場合、IDirect3DRMFace2インターフェイスへのポインタがセットされるアドレス。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。
指定の親フレームの新しい子フレーム (Direct3DRMFrame3オブジェクト) を生成する。
構文
HRESULT CreateFrame(
LPDIRECT3DRMFRAME3 lpD3DRMFrame,
LPDIRECT3DRMFRAME3 *lplpD3DRMFrame
);
パラメータ
- lpD3DRMFrame
- 新しいフレームの親となるIDirect3DRMFrame3オブジェクトのアドレス。
- lplpD3DRMFrame
- 呼び出しが成功した場合、IDirect3DRMFrame3インターフェイスへのポインタがセットされるアドレス。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。
注意
子フレームは、その親から運動属性を継承する。たとえば、親が一定の速度で動いているときには、子フレームも同じ速度で動く。さらに、親に回転がセットされると、子フレームは、親の原点の周囲を回転する。親を持たないフレームは、シーンと呼ばれる。シーンを作成するには、親としてNULLを指定する。アプリケーションは、親のないフレームを作成した後、IDirect3DRMFrame3::AddChildメソッドを使用して、後で親フレームに関連させることができる。
アプリケーションが右手ジオメトリをセットするためにIDirect3DRM3::SetOptionsを呼び出した場合、ルートフレーム (親として NULLを持つフレーム) のデフォルト軸は、v = (0, 0, -1) かつ u = (0, 1, 0) になる。このため、IDirect3DRMFrame3::GetOrientationとIDirect3DRMFrame3::SetOrientationは、右手モードで正しく機能する。
参照
指定のタイプと色で、新しい照明を作成する。
構文
HRESULT CreateLight(
D3DRMLIGHTTYPE d3drmltLightType,
D3DCOLOR cColor,
LPDIRECT3DRMLIGHT *lplpD3DRMLight
);
パラメータ
- d3drmltLightType
- D3DRMLIGHTTYPE列挙型で与えられる照明タイプの1つ。
- cColor
- 照明の色。
- lplpD3DRMLight
- 呼び出しが成功した場合、IDirect3DRMLightインターフェイスへのポインタがセットされるアドレス。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。
指定のタイプと色で、新しい照明を作成する。
構文
HRESULT CreateLightRGB(
D3DRMLIGHTTYPE ltLightType,
D3DVALUE vRed,
D3DVALUE vGreen,
D3DVALUE vBlue,
LPDIRECT3DRMLIGHT *lplpD3DRMLight
);
パラメータ
- ltLightType
- D3DRMLIGHTTYPE列挙型で与えられる照明タイプの1つ。
- vRed, vGreen, vBlue
- 照明の色。色の各要素は、0.0から1.0の範囲にある必要がある。
- lplpD3DRMLight
- 呼び出しが成功した場合、IDirect3DRMLightインターフェイスへのポインタがセットされるアドレス。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。
注意
次のコード部分は、CreateLightRGBを呼び出して明るいディレクショナル照明を作成する。これは、Direct3DRMCreate関数を使用してすでにDirect3D保持モードオブジェクトが作成されていることを前提としている。
LPDIRECT3DRM3 lpD3DRM; LPDIRECT3DRMLIGHT light; if (FAILED(lpD3DRM->CreateLightRGB(D3DRMLIGHT_DIRECTIONAL, D3DVAL(0.9), D3DVAL(0.9), D3DVAL(0.9), &light)) { // エラー }
指定の反射プロパティを持つマテリアルを作成する。
構文
HRESULT CreateMaterial(
D3DVALUE vPower,
LPDIRECT3DRMMATERIAL2 *lplpD3DRMMaterial
);
パラメータ
- vPower
- 反射するハイライトの鋭さ。レンダリングする表面に、5の値は金属の外観を与え、より大きい値はよりプラスチック的な外観を与える。
- lplpD3DRMMaterial
- 呼び出しが成功した場合、IDirect3DRMMaterial2インターフェイスへのポインタがセットされるアドレス。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。
面をもたない新しいメッシュオブジェクトを生成する。このメッシュは、フレームに追加されるまでは目に見えない。
構文
HRESULT CreateMesh(
LPDIRECT3DRMMESH *lplpD3DRMMesh
);
パラメータ
- lplpD3DRMMesh
- 呼び出しが成功した場合、IDirect3DRMMeshインターフェイスへのポインタがセットされるアドレス。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。
新しいメッシュビルダオブジェクトを生成する。
構文
HRESULT CreateMeshBuilder(
LPDIRECT3DRMMESHBUILDER3 *lplpD3DRMMeshBuilder3
);
パラメータ
- lplpD3DRMMeshBuilder3
- 呼び出しが成功した場合、IDirect3DRMMeshBuilder3インターフェイスへのポインタがセットされるアドレス。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。
注意
デフォルトでは、パースペクティブ補正がオンである。
オブジェクトを初期化することなく新しいオブジェクトを生成する。
構文
HRESULT CreateObject(
REFCLSID rclsid,
LPUNKNOWN pUnkOuter,
REFIID riid,
LPVOID FAR *ppv
);
パラメータ
- rclsid
- 新しいオブジェクトのクラス識別子。
- pUnkOuter
- COM集合化を可能にする外部IUnknownインターフェイスへのポインタ。
- riid
- 作成するオブジェクトのインターフェイス識別子。
- ppv
- メソッドが戻ったときのオブジェクトへのポインタのアドレス。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。
注意
このメソッドを呼び出したアプリケーションが生成したオブジェクトの初期化を行わなければならない(他のIDirect3DRM3インターフェイスの生成メソッドは、自動的にオブジェクトの初期化を行う)。ある場合、たとえば、Direct3DRMViewport2オブジェクトに関するそのオブジェクトに、Initメソッドを使用することができる。アプリケーションは、任意のオブジェクトを初期化するのにInitメソッドを呼び出すのは一度限りにする必要がある。
アプリケーションは、このメソッドを使用してDirect3DRMオブジェクトの集合体を実装することができる。
面をもたない新しいプログレッシブメッシュオブジェクトを生成する。メッシュは、フレームに追加されるまで目に見えない。
構文
HRESULT CreateProgressiveMesh(
LPDIRECT3DRMPROGRESSIVEMESH *lplpD3DRMProgressiveMesh
);
パラメータ
- lplpD3DRMProgressiveMesh
- 呼び出しが成功した場合、IDirect3DRMProgressiveMeshインターフェイスへのポインタがセットされるアドレス。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。
指定のビジュアルと照明を使用して影を作成し、指定の平面にその影を投影する。影も一種のビジュアルであり、ビジュアルを含むフレームに追加する必要がある。
構文
HRESULT CreateShadow(
LPUNKNOWN pUnk,
LPDIRECT3DRMLIGHT lpLight,
D3DVALUE px,
D3DVALUE py,
D3DVALUE pz,
D3DVALUE nx,
D3DVALUE ny,
D3DVALUE nz,
LPDIRECT3DRMSHADOW2 *lplpShadow
);
パラメータ
- pUnk
- 影を投影するオブジェクトのアドレス。
- lpLight
- 照明であるIDirect3DRMLightインターフェイスのアドレス。
- px, py, pz
- 影が投影される平面。
- nx, ny, nz
- 影が投影される平面に対する法線。
- lplpShadow
- 呼び出しが成功した場合、影ビジュアルに対する有効なポインタで初期化されるポインタのアドレス。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。
メモリのイメージからテクスチャを作成する。
構文
HRESULT CreateTexture(
LPD3DRMIMAGE lpImage,
LPDIRECT3DRMTEXTURE3 *lplpD3DRMTexture3
);
パラメータ
- lpImage
- テクスチャのソースを記述するD3DRMIMAGE構造体のアドレス。
- lplpD3DRMTexture3
- 呼び出しが成功した場合、IDirect3DRMTexture3インターフェイスへのポインタがセットされるアドレス。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。
注意
イメージに関連するメモリは、Direct3D保持モードのバッファにコピーされるのではなく、テクスチャがレンダリングされるたびに使用される。これは、イメージがレンダリング対象およびテクスチャの両方として使用されることを可能にする。
指定したDirectDrawサーフェスからテクスチャを作成する。
構文
HRESULT CreateTextureFromSurface(
LPDIRECTDRAWSURFACE lpDDS,
LPDIRECT3DRMTEXTURE3 *lplpD3DRMTexture3
);
パラメータ
- lpDDS
- テクスチャを格納するDirectDrawSurfaceオブジェクトのアドレス。
- lplpD3DRMTexture3
- 呼び出しが成功した場合、IDirect3DRMTexture3インターフェイスへのポインタがセットされるアドレス。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。
注意
DirectDrawサーフェスからテクスチャを作成する場合、システムメモリ中にサーフェスを作成するのが最善である。これでソフトウェアデバイスの最適なパフォーマンスが可能になり、Direct3D保持モードがハードウェアデバイスに対してビデオメモリの使用をより効率的に管理できるようになる。
アプリケーション定義のビジュアルオブジェクトを生成する。作成されたオブジェクトは、アプリケーション定義ハンドラを使用してシーンに追加したり、レンダリングしたりすることができる。
構文
HRESULT CreateUserVisual(
D3DRMUSERVISUALCALLBACK fn,
LPVOID lpArg,
LPDIRECT3DRMUSERVISUAL *lplpD3DRMUV
);
パラメータ
- fn
- アプリケーション定義D3DRMUSERVISUALCALLBACKコールバック関数。
- lpArg
- コールバック関数に渡されたアプリケーション定義データのアドレス。
- lplpD3DRMUV
- 呼び出しが成功した場合、IDirect3DRMUserVisualインターフェイスへのポインタがセットされるアドレス。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。
参照
デバイス座標が(dwXPos, dwYPos)から(dwXPos + dwWidth, dwYPos + dwHeight)までのデバイス上で、ビューポートを作成する。
構文
HRESULT CreateViewport(
LPDIRECT3DRMDEVICE3 lpDev,
LPDIRECT3DRMFRAME3 lpCamera,
DWORD dwXPos,
DWORD dwYPos,
DWORD dwWidth,
DWORD dwHeight,
LPDIRECT3DRMVIEWPORT2 *lplpD3DRMViewport
);
パラメータ
- lpDev
- 作成するビューポートが存在するIDirect3DRMDevice3デバイスのアドレス。
- lpCamera
- ビューの位置と方向を記述するフレームのアドレス。
- dwXPos, dwYPos, dwWidth, dwHeight
- デバイス座標でのビューポートの位置とサイズ。ビューポートサイズは物理デバイスより大きくできない。大きくすると、メソッドは失敗に終わる。
- lplpD3DRMViewport
- 呼び出しが成功した場合、IDirect3DRMViewport2インターフェイスへのポインタがセットされるアドレス。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。ビューポートサイズが物理デバイスより大きければ、D3DRMERR_BADVALUEを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。
注意
ビューポートは、カメラを含むシーンの中で、カメラから取ったビュー方向とアップベクトルを使用してオブジェクトを表示する。ビューポートサイズは、物理デバイスよりも大きくできない。
デバイスに関する詳細は、「出力デバイス」と「IDirect3DRMDevice3」を参照すること。
面とメッシュにテクスチャ座標を割り当てるのに使用できるラッピング関数を作成する。ベクトル[ox oy oz]は、ラップの原点を[dx dy dz]はラップのz軸を、[ux uy uz]はラップのy軸をそれぞれ与える。2Dベクトルの[ou ov]と[su sv]は、ラッピング関数の結果に適用されるテクスチャの原点とスケールファクタを与える。
構文
HRESULT CreateWrap(
D3DRMWRAPTYPE type,
LPDIRECT3DRMFRAME3 lpRef,
D3DVALUE ox,
D3DVALUE oy,
D3DVALUE oz,
D3DVALUE dx,
D3DVALUE dy,
D3DVALUE dz,
D3DVALUE ux,
D3DVALUE uy,
D3DVALUE uz,
D3DVALUE ou,
D3DVALUE ov,
D3DVALUE su,
D3DVALUE sv,
LPDIRECT3DRMWRAP *lplpD3DRMWrap
);
パラメータ
- type
- D3DRMWRAPTYPE列挙型のメンバの1つ。
- lpRef
- ラップの参照フレーム。
- ox, oy, oz
- ラップの原点。
- dx, dy, dz
- ラップのz軸。
- ux, uy, uz
- ラップのy軸。
- ou, ov
- テクスチャの原点。
- su, sv
- テクスチャのスケールファクタ。
- lplpD3DRMWrap
- 呼び出しが成功した場合、IDirect3DRMWrapインターフェイスへのポインタがセットされるアドレス。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。
参照
各Direct3DRMオブジェクトのfuncパラメータによって指定されるコールバック関数を使用する。
構文
HRESULT EnumerateObjects(
D3DRMOBJECTCALLBACK func,
LPVOID lpArg
);
パラメータ
- func
- 各Direct3DRMObjectオブジェクトおよびアプリケーション定義引数によって使われるアプリケーション定義のD3DRMOBJECTCALLBACKコールバック関数。
- lpArg
- コールバック関数に渡されたアプリケーション定義データのアドレス。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。
システムで作成されたすべてのDirect3DRMデバイスを返す。
構文
HRESULT GetDevices(
LPDIRECT3DRMDEVICEARRAY *lplpDevArray
);
パラメータ
- lplpDevArray
- Direct3DRMデバイスの結果の配列がセットされるポインタのアドレス。Direct3DRMDeviceArrayオブジェクトの詳細については、「IDirect3DRMDeviceArray」を参照すること。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。
指定の名前でDirect3DRMObjectを取得する。
構文
HRESULT GetNamedObject(
const char *lpName,
LPDIRECT3DRMOBJECT *lplpD3DRMObject
);
パラメータ
- lpName
- 検索するオブジェクトの名前。
- lplpD3DRMObject
- 呼び出しが成功した場合に、有効なDirect3DRMObjectポインタで初期化されるポインタのアドレス。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。
注意
システムがlpNameパラメータで指定した名前のオブジェクトを発見しなかった場合に、このメソッドは、D3DRM_OKを返すが、lplpD3DRMObjectパラメータはNULLとなる。
Direct3D保持モードで左手または右手ジオメトリのどちらを使用するかを引き出す。
構文
HRESULT GetOptions( LPDWORD lpdwOptions);
パラメータ
- lpdwOptions
- 現在のDirect3D保持モードオプションを示すフラグ値へのポインタ。現在定義されているフラグは、次の通りである。
- D3DRMOPTIONS_LEFTHANDED
- 左手ジオメトリを使用する。これはデフォルト値である。
- D3DRMOPTIONS_RIGHTHANDED
- 右手ジオメトリを使用する。
戻り値
次の値のうち1つを返す。
DDERR_INVALIDOBJECT DDERR_INVALIDPARAMS DD_OK
注意
D3DRMOPTIONS_LEFTHANDEDとD3DRMOPTIONS_RIGHTHANDEDは、ピッキングと光線ピッキングはもちろんのこと、次のオブジェクトにも影響を与える。
- IDirect3DRMClippedVisual
- IDirect3DRMMesh
- IDirect3DRMMeshBuilder3
- IDirect3DRMProgressiveMesh
- IDirect3DRMShadow2
- IDirect3DRMTexture3
- IDirect3DRMViewport2
このメソッドは、DirectX version 6.0で導入された。
参照
「Direct3Dの座標系 」
現在の検索パスを返す。Windowsでは、パスは、セミコロン(;)で区切られたディレクトリのリストである。
構文
HRESULT GetSearchPath(
DWORD *lpdwSize,
LPSTR lpszPath
);
パラメータ
- lpdwSize
- DWORD値へのポインタ。GetSearchPathが使われたとき、lpszPathの長さを含む必要がある。戻ったときには、現在の検索パスを含むlpszPathの文字列の長さを格納する。このパラメータはNULLにできない。
- lpszPath
- 検索パスを指定するヌル終端の文字列へのポインタ。GetSearchPathが使われたとき、lpszPathがNULLの場合、このメソッドは、lpdwSizeパラメータが指す位置にある現在の文字列の長さを返す。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。
参照
オブジェクトをロードする。
構文
HRESULT Load(
LPVOID lpvObjSource,
LPVOID lpvObjID,
LPIID *lplpGUIDs,
DWORD dwcGUIDs,
D3DRMLOADOPTIONS d3drmLOFlags,
D3DRMLOADCALLBACK d3drmLoadProc,
LPVOID lpArgLP,
D3DRMLOADTEXTURE3CALLBACK d3drmLoadTextureProc,
LPVOID lpArgLTP,
LPDIRECT3DRMFRAME3 lpParentFrame
);
パラメータ
- lpvObjSource
- ロードするオブジェクトのソース。このソースは、d3drmLOFlagsパラメータで指定されたソースフラグに従って、ファイル、リソース、メモリブロック、またはストリームにすることができる。
- lpvObjID
- ロードするオブジェクトの名前または位置。このパラメータの使用は、d3drmLOFlagsパラメータで指定されている識別フラグに依存する。D3DRMLOAD_BYPOSITIONフラグが指定されていれば、このパラメータは、ファイル中のオブジェクトの順を与えるDWORD値へのポインタとなる。このパラメータはNULLにできる。
- lplpGUIDs
- ロードするインターフェイス識別子の配列のアドレス。たとえば、このパラメータがIID_IDirect3DRMMeshBuilder3およびIID_IDirect3DRMAnimationSet2を格納する2つの要素の配列であれば、このメソッドは、すべてのアニメーションセットオブジェクトとメッシュビルダオブジェクトをロードする。可能なGUIDは、IID_IDirect3DRMProgressiveMesh、IID_IDirect3DRMMeshBuilder3、IID_IDirect3DRMAnimationSet2、IID_IDirect3DRMAnimation2、およびIID_IDirect3DRMFrame3の中の1つ以上でなければならない。
- dwcGUIDs
- lplpGUIDsパラメータで指定されている要素の数。
- d3drmLOFlags
- ロードオプションを記述するD3DRMLOADOPTIONS型の値。
- d3drmLoadProc
- システムが指定のオブジェクトを読み込んだときに使われるD3DRMLOAD3CALLBACKコールバック関数。
- lpArgLP
- D3DRMLOADCALLBACKコールバック関数に渡されるアプリケーション定義データのアドレス。
- d3drmLoadTextureProc
- D3DRMLOADTEXTURE3CALLBACKコールバック関数。これは、特別なフォーマットを必要とするオブジェクトが用いるテクスチャを読み出すときに呼び出される。このパラメータにはNULLを指定することができる。
- lpArgLTP
- D3DRMLOADTEXTURE3CALLBACKコールバック関数に渡されるアプリケーション定義データのアドレス。
- lpParentFrame
- 親Direct3DRMFrameオブジェクトのアドレス。この引数は、アニメーションセットのロードだけに影響する。Xファイルからロードされたアニメーションが、Xファイル中の親のないフレームを参照するときは、その親には、lpParentFramがセットされる。ただし、Xファイル中の任意のフレームをロードするように、Loadを使った場合には、lpParentFrameは、親のないXファイル中のフレームに対する親フレームとして使用されることはない。すなわち、lpParentFrameは、アニメーションセットをロードしたときに限り使用される。lpParentFrameの値はNULLにすることができる。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。
注意
デフォルトでは、パースペクティブ補正がオンである。
このメソッドによって、Microsoft® DirectX® ファイルからのオブジェクトのロードが極めて柔軟に行えるようになる。次にその使用法の例を示す。
#include <windows.h> #include <stdio.h> #include <initguid.h> #include <d3drm.h> LPDIRECT3DRM d3dApi; int totalMesh = 0, totalAnim = 0, totalFrames = 0; HRESULT loadTexture(LPSTR name, LPVOID lpArg, LPDIRECT3DRMTEXTURE *tex) { return d3dApi->lpVtbl->LoadTexture(d3dApi, name, tex); } void loadCallback(LPDIRECT3DRMOBJECT lpObject, REFIID objGuid, LPVOID lpArg) { if (IsEqualIID(objGuid, &IID_IDirect3DRMFrame3)) { totalFrames ++; return; } if (IsEqualIID(objGuid, &IID_IDirect3DRMAnimationSet2)) { totalAnim ++; return; } if (IsEqualIID(objGuid, &IID_IDirect3DRMMeshBuilder)) { totalMesh ++; return; } return; } BOOL loadObjects(LPSTR filename) { LPGUID guids[] = { (LPGUID)&IID_IDirect3DRMMeshBuilder, (LPGUID)&IID_IDirect3DRMAnimationSet2, (LPGUID)&IID_IDirect3DRMFrame3 }; /* ローダにどのオブジェクトを対象とするかを告げる */ if (FAILED(d3dApi->lpVtbl->Load(d3dApi, filename, NULL, guids, 3, D3DRMLOAD_FROMFILE, loadCallback, NULL, loadTexture, NULL, NULL))) return FALSE; printf("Total Frames loaded = %d\n", totalFrames); printf("Total Animation Sets loaded = %d\n", totalAnim); printf("Total Meshbuilders loaded = %d\n", totalMesh); return TRUE; } int main(int argc, char **argv) { if (FAILED(Direct3DRMCreate(&d3dApi))) return FALSE; if (argc != 2) { fprintf(stderr, "usage: %s filename\n", argv[0]); return FALSE; } if (!loadObjects(argv[1])) return FALSE; return(0); }
指定ファイルからDirect3DRMTexture2テクスチャをロードする。このテクスチャは、8、24、または32ビット/ピクセルをとることができる。そのフォーマットは、Windows ビットマップ (.bmp) かPortable Pixmap (.ppm) P6フォーマットのどちらかにする必要がある。
構文
HRESULT LoadTexture(
const char *lpFileName,
LPDIRECT3DRMTEXTURE3 *lplpD3DRMTexture
);
パラメータ
- lpFileName
- 必要な.bmpまたは.ppmファイルの名前のアドレス。
- lplpD3DRMTexture
- この呼び出しが成功した場合に、有効なIDirect3DRMTexture3ポインタで初期化されるポインタのアドレス。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。
注意
LoadTextureは、テクスチャがBMPフォーマットであるかPPMフォーマットであるかをチェックする。LoadTextureは、両フォーマットをロードすることができる。その他のフォーマットをロードするには、D3DRMIMAGE構造体へのイメージロード用のコードをコールバック関数に追加し、それからIDirect3DRM3::CreateTextureを使う。
独自のテクスチャコールバック関数を書くとき、テクスチャコールバック関数のLoadTexture呼び出しはテクスチャへの参照を受け取らない。たとえば、
HRESULT loadTextures(char *name, void *arg, LPDIRECT3DRMTEXTURE2 *tex) { return lpD3DRM2->LoadTexture(name, tex); }この例で、texの参照を受け取ることはできない。テクスチャコールバック関数でロードした各テクスチャへの参照を保持するには、テクスチャにAddRefする。たとえば、
LPDIRECT3DRMTEXTURE2 *texarray; HRESULT loadTextures(char *name, void *arg, LPDIRECT3DRMTEXTURE2 *tex) { if (FAILED(lpD3DRM2->LoadTexture(name, tex)) { return NULL; } texArray[current++] = tex; tex->AddRef(); return tex; }
指定のリソースからDirect3DRMTexture2テクスチャをロードする。
構文
HRESULT LoadTextureFromResource(
HMODULE hModule,
LPCTSTR strName,
LPCTSTR strType,
LPDIRECT3DRMTEXTURE3 *lplpD3DRMTexture
);
パラメータ
- hModule
- モジュールのハンドル。そのモジュールの実行可能ファイルがリソースを含む。
- strName
- テキスチャとして使われるリソース名を指定するヌル終端文字列。
- strType
- リソースのタイプ名を指定するヌル終端文字列を指す。このパラメータは、以下のリソースのタイプのいずれか、またはユーザ定義タイプにすることができる。
値 意味 RT_BITMAP ビットマップリソース RT_RCDATA アプリケーション定義リソース(生データ) - lplpD3DRMTexture
- この呼び出しが成功した場合に、有効なIDirect3DRMTexture3オブジェクトで初期化されるポインタのアドレス。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。
データを関連付けるクライアント (アプリケーション) を登録する。
構文
HRESULT RegisterClient( REFGUID rguid, LPDWORD lpdwID);
パラメータ
- rguid
- アプリケーションを表すGUIDへの参照。
- lpdwID
- データを保持モードオブジェクトに関連付けるために、アプリケーションがIDirect3DRMObject2::SetClientDataとIDirect3DRMObject2::GetClientDataとともに使用する一意のIDを受け取るアドレス。
戻り値
次の値のうち1つを返す。
DDERR_INVALIDOBJECT DDERR_INVALIDPARAMS DDERR_OUTOFMEMORY DD_OK
注意
アプリケーションはGUIDを渡し、DWORD 識別子を受け取る。次に、この識別子をIDirect3DRMObject2::SetClientDataとIDirect3DRMObject2::GetClientDataで使用して、データを保持モードオブジェクトに関連付ける。アプリケーションがIDirect3DRMObject2::SetClientDataを使用する場合、IDirect3DRMObject2::SetClientDataによってアプリケーションが格納する任意のデータは、そのタイプに応じてリリースされる。同じ GUIDを持つこのメソッドを複数回呼び出しても、同じIDが返される。このメソッドは、DirectX version 6.0で導入された。
Direct3DRMTexture2オブジェクトに対して使用するデフォルトの色を設定する。
構文
HRESULT SetDefaultTextureColors(
DWORD dwColors
);
パラメータ
- dwColors
- 色の数。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。
注意
このメソッドは、IDirect3DRM3::CreateTextureメソッドの前に使われたときに限りテクスチャの色に影響する。すでに作成されているテクスチャには、何の効果もない。
Direct3DRMTexture2オブジェクトに対して使用するデフォルトのシェードを設定する。
構文
HRESULT SetDefaultTextureShades(
DWORD dwShades
);
パラメータ
- dwShades
- シェード数。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。
注意
このメソッドは、IDirect3DRM3::CreateTextureメソッドの前に使われたときに限りテクスチャのシェードに影響する。すでに作成されているテクスチャには、何の効果もない。
Direct3D保持モードで左手または右手ジオメトリのどちらを使用するかをセットする。
構文
HRESULT SetOptions( LPDWORD dwOptions);
パラメータ
- dwOptions
- 現在のDirect3D保持モードオプションを示すフラグ値。現在定義されているフラグは、次の通りである。
- D3DRMOPTIONS_LEFTHANDED
- 左手ジオメトリを使用する。これはデフォルト値である。
- D3DRMOPTIONS_RIGHTHANDED
- 右手ジオメトリを使用する。
戻り値
次の値のうち1つを返す。
DDERR_INVALIDOBJECT DDERR_INVALIDPARAMS DD_OK
注意
D3DRMOPTIONS_LEFTHANDEDとD3DRMOPTIONS_RIGHTHANDEDは、ピッキングと光線ピッキングはもちろんのこと、次のオブジェクトにも影響を与える。
- IDirect3DRMClippedVisual
- IDirect3DRMMesh
- IDirect3DRMMeshBuilder3
- IDirect3DRMProgressiveMesh
- IDirect3DRMShadow2
- IDirect3DRMTexture3
- IDirect3DRMViewport2
このメソッドは、DirectX version 6.0で導入された。
参照
ディレクトリのリストから現在のファイル検索パスを設定する。Windowsでは、パスは、セミコロン(;)で区切られたリストにする必要がある。
構文
HRESULT SetSearchPath(
LPCSTR lpPath
);
パラメータ
- lpPath
- 現在の検索パスとして設定するパスを指定するヌル終端の文字列のアドレス。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。
注意
デフォルトの検索パスは、D3DPATH環境変数の値が採用される。環境変数が設定されていなければ、検索パスは空になる。ファイルのオープン時、システムは、まず、現在の作業ディレクトリ中でファイルを探し、次に、検索パス中の各ディレクトリをチェックする。
D3DPATHは、デフォルトの検索パスを設定する環境変数である。
参照
Direct3DRMシステムのハートビートを行う。このメソッドが使われると、すべての可動フレームの位置は、現在の運動属性にしたがって更新され、シーンが現在のデバイスにレンダリングされる。また、関連したコールバック関数が、適切なタイミングで呼び出される。このメソッドは、レンダリングサイクルが完了したときに制御を返す。
構文
HRESULT Tick(
D3DVALUE d3dvalTick
);
パラメータ
- d3dvalTick
- IDirect3DRMFrame3::SetRotationおよびIDirect3DRMFrame3::SetVelocityメソッドに対する速度と回転のステップ。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。
注意
シーンのレンダリングに柔軟性を持たせるため、保持モードの他のメソッドを使用して、このメソッドを実装することもできる。
IDirect3DRMObject2::SetClientDataによってセットしたすべてのデータとオブジェクトの関連をなくし、データをそのタイプに応じて開放する。
構文
HRESULT UnregisterClient( REFGUID rguid);
パラメータ
- rguid
- アプリケーションを表すGUIDへの参照。
戻り値
次の値のうち1つを返す。
D3DRMERR_CLIENTNOTREGISTERED DDERR_INVALIDOBJECT DDERR_INVALIDPARAMS DD_OK
注意
このメソッドは、DirectX version 6.0とともに導入された。
トップに戻る
© 1999 Microsoft and/or its suppliers. All rights reserved. Terms of Use.