IDirect3DRM3

アプリケーションは、IDirect3DRM3インターフェイスを使用してDirect3DRM3オブジェクトを生成し、システムレベル変数に従って動作する。Direct3D保持モードインターフェイスの履歴については、「インターフェイスの変更点」を参照すること。

IDirect3DRM3IDirect3DRM2、およびIDirect3DRMインターフェイスのメソッドは、次のオブジェクトを作成する。

Microsoft DirectX version 6.0は、IDirect3DRM3インターフェイスを導入している。IDirect3DRM3は、IDirect3DRM2IDirect3DRMインターフェイスが提供するすべてのメソッドをサポートし、これら2つの旧インターフェイスを置換する。これは、フラグパラメータをIDirect3DRM2CreateDeviceFromSurfaceに追加し、RegisterClientUnregisterClientおよびCreateClippedVisualメソッドをIDirect3DRM2が提供するメソッドに追加する。IDirect3DRM3は、左手または右手ジオメトリのどちらを使用するかをセットし取り出すGetOptionsSetOptionsメソッドも追加する。

IDirect3DRM3は、IDirect3DRM2と同様にIDirect3DRM中のすべてのメソッドをサポートする。これは、CreateProgressiveMeshメソッドをIDirect3DRMが提供するメソッドに追加する。CreateDeviceFromSurfaceCreateDeviceFromD3DおよびCreateDeviceFromClipperメソッドはすべて、IDirect3DRM2によって DIRECT3DRMDEVICE2オブジェクトを作成し、IDirect3DRM3によって DIRECT3DRMDEVICE3オブジェクトを作成する。CreateViewportメソッドは、DirectDRMDevice2オブジェクト上にビューポートを作成する。LoadTextureLoadTextureFromResourceメソッドは、IDirect3DRM2によって Direct3DRMTexture2オブジェクトをロードし、IDirect3DRM3によって Direct3DRMTexture3オブジェクトをロードする。

IDirect3DRM3またはIDirect3DRM2 COM (Component Object Model) インターフェイスにアクセスするには、Direct3DRMCreateによってIDirect3DRMオブジェクトを作成し、次にIDirect3DRMからそれぞれIDirect3DRM3またはIDirect3DRM2を照会する。また、CoCreateInstanceを直接使用してメインのDirect3D保持モードオブジェクトにアクセスすることができる。

IDirect3DRM3インターフェイスを使用して MeshBuilderオブジェクトを作成すると、MeshBuilderは、そのインプリメンテーションに直接モードのDrawPrimitiveインターフェイスを使用する。

IDirect3DRM3インターフェイスを使用して照明を作成すると、照明は最新の直接モード機能を活用し、D3DLIGHT2構造体を使用することになる。

アプリケーションはIDirect3DRMDevice3IDirect3DRMDevice2IDirect3DRMDeviceインターフェイスを使用して出力デバイスと会話する。IDirect3DRM3IDirect3DRM2または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

IDirect3DRM3::AddSearchPath

IDirect3DRM3

現在のファイル検索パスの最後にディレクトリのリストを追加する。

構文

HRESULT AddSearchPath(
  LPCSTR lpPath
  );

パラメータ

lpPath
現在の検索パスに追加するパスを指定するヌル終端文字列のアドレス。

戻り値

成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。

注意

Microsoft® Windows®では、パスは、セミコロン(;)で区切られたリストにする必要がある。

参照

IDirect3DRM3::SetSearchPath

IDirect3DRM3::CreateAnimation

IDirect3DRM3

空のDirect3DRMAnimationオブジェクトを生成する。

構文

HRESULT CreateAnimation(
  LPDIRECT3DRMANIMATION2 *lplpD3DRMAnimation
  );

パラメータ

lplpD3DRMAnimation
呼び出しが成功した場合、IDirect3DRMAnimation2インターフェイスへのポインタがセットされるアドレス。

戻り値

成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。

IDirect3DRM3::CreateAnimationSet

IDirect3DRM3

空のDirect3DRMAnimationSetオブジェクトを作成する。

構文

HRESULT CreateAnimationSet (
  LPDIRECT3DRMANIMATIONSET2 *lplpD3DRMAnimationSet
  );

パラメータ

lplpD3DRMAnimationSet
呼び出しが成功すれば、IDirect3DRMAnimationSet2インターフェイスへのポインタがセットされるアドレス。

戻り値

成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。

IDirect3DRM3::CreateClippedVisual

IDirect3DRM3

クリップビジュアルオブジェクトを作成する。

構文

HRESULT CreateClippedVisual(
  LPDIRECT3DRMVISUAL lpVisual,
  LPDIRECT3DRMCLIPPEDVISUAL  *lpClippedVisual);

パラメータ

lpVisual
メッシュビルダオブジェクトなどのビジュアルオブジェクトへのポインタ。
lpClippedVisual
作成されたIDirect3DRMClippedVisualクリップビジュアルオブジェクトを受け取るポインタ。

戻り値

次の値のうち1つを返す。
 
DDERR_INVALIDOBJECT
DDERR_INVALIDPARAMS
DD_OK

注意

このメソッドは、DirectX version 6.0とともに導入された。

IDirect3DRM3::CreateDevice

IDirect3DRM3

Windowsプラットフォームでは未実装である。

構文

HRESULT CreateDevice(
  DWORD dwWidth,
  DWORD dwHeight,
  LPDIRECT3DRMDEVICE3 *lplpD3DRMDevice
  );

IDirect3DRM3::CreateDeviceFromClipper

IDirect3DRM3

指定された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構造体からの以下のフラグを使用して、デフォルト設定値を記述する。
D3DPSHADECAPS_ALPHAFLATSTIPPLED
D3DPTBLENDCAPS_COPY | D3DPTBLENDCAPS_MODULATE
D3DPMISCCAPS_CULLCCW
D3DPRASTERCAPS_FOGVERTEX
D3DPCMPCAPS_LESSEQUAL
D3DPTFILTERCAPS_NEAREST
D3DPTEXTURECAPS_PERSPECTIVE | D3DPTEXTURECAPS_TRANSPARENCY
D3DPTADDRESSCAPS_WRAP

ハードウェアデイバスが検出されなかった場合には、モノクロ(ランプ)のソフトウェアドライバがロードされる。特別な要件があって、デフォルト設定値のこのリストでは満足できない場合、アプリケーションは、lpGUIDに対してNULLを指定する代わりにデバイスを列挙する必要がある。

デバイスについての詳細は、「出力デバイス」および「IDirect3DRMDevice3」を参照すること。

IDirect3DRM3::CreateDeviceFromD3D

IDirect3DRM3

指定されたDirect3Dオブジェクトを使用して、Direct3D保持モードWindowsデバイスを生成する。

構文

HRESULT CreateDeviceFromD3D(
  LPDIRECT3D2 lpD3D,
  LPDIRECT3DDEVICE2 lpD3DDev,
  LPDIRECT3DRMDEVICE3 *lplpD3DRMDevice
  );

パラメータ

lpD3D
Direct3D直接モードDirect3D2オブジェクトのインスタンスへのポインタ。
lpD3DDev
Direct3D直接モードDirect3DDevice2オブジェクトへのポインタ。
lplpD3DRMDevice
呼び出しが成功した場合、IDirect3DRMDevice3インターフェイスへのポインタがセットされるアドレス。

戻り値

成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。

注意

デバイスについての詳細は、「出力デバイス」および「IDirect3DRMDevice3」を参照すること。

IDirect3DRM3::CreateDeviceFromSurface

IDirect3DRM3

指定された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」を参照すること。

IDirect3DRM3::CreateFace

IDirect3DRM3

IDirect3DRMFace2インターフェイスのインスタンスを生成する。

構文

HRESULT CreateFace(
  LPDIRECT3DRMFACE2 *lplpd3drmFace2
  );

パラメータ

lplpd3drmFace2
呼び出しが成功した場合、IDirect3DRMFace2インターフェイスへのポインタがセットされるアドレス。

戻り値

成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。

IDirect3DRM3::CreateFrame

IDirect3DRM3

指定の親フレームの新しい子フレーム (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::GetOrientationIDirect3DRMFrame3::SetOrientationは、右手モードで正しく機能する。

参照

IDirect3DRMFrame3::AddChild

IDirect3DRM3::CreateLight

IDirect3DRM3

指定のタイプと色で、新しい照明を作成する。

構文

HRESULT CreateLight(
  D3DRMLIGHTTYPE d3drmltLightType,
  D3DCOLOR cColor,
  LPDIRECT3DRMLIGHT *lplpD3DRMLight
  );

パラメータ

d3drmltLightType
D3DRMLIGHTTYPE列挙型で与えられる照明タイプの1つ。
cColor
照明の色。
lplpD3DRMLight
呼び出しが成功した場合、IDirect3DRMLightインターフェイスへのポインタがセットされるアドレス。

戻り値

成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。

IDirect3DRM3::CreateLightRGB

IDirect3DRM3

指定のタイプと色で、新しい照明を作成する。

構文

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))
{
    // エラー
}

IDirect3DRM3::CreateMaterial

IDirect3DRM3

指定の反射プロパティを持つマテリアルを作成する。

構文

HRESULT CreateMaterial(
  D3DVALUE vPower,
  LPDIRECT3DRMMATERIAL2 *lplpD3DRMMaterial
  );

パラメータ

vPower
反射するハイライトの鋭さ。レンダリングする表面に、5の値は金属の外観を与え、より大きい値はよりプラスチック的な外観を与える。
lplpD3DRMMaterial
呼び出しが成功した場合、IDirect3DRMMaterial2インターフェイスへのポインタがセットされるアドレス。

戻り値

成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。

IDirect3DRM3::CreateMesh

IDirect3DRM3

面をもたない新しいメッシュオブジェクトを生成する。このメッシュは、フレームに追加されるまでは目に見えない。

構文

HRESULT CreateMesh(
  LPDIRECT3DRMMESH *lplpD3DRMMesh
  );

パラメータ

lplpD3DRMMesh
呼び出しが成功した場合、IDirect3DRMMeshインターフェイスへのポインタがセットされるアドレス。

戻り値

成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。

IDirect3DRM3::CreateMeshBuilder

IDirect3DRM3

新しいメッシュビルダオブジェクトを生成する。

構文

HRESULT CreateMeshBuilder(
  LPDIRECT3DRMMESHBUILDER3 *lplpD3DRMMeshBuilder3
  );

パラメータ

lplpD3DRMMeshBuilder3
呼び出しが成功した場合、IDirect3DRMMeshBuilder3インターフェイスへのポインタがセットされるアドレス。

戻り値

成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。

注意

デフォルトでは、パースペクティブ補正がオンである。

IDirect3DRM3::CreateObject

IDirect3DRM3

オブジェクトを初期化することなく新しいオブジェクトを生成する。

構文

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オブジェクトの集合体を実装することができる。

IDirect3DRM3::CreateProgressiveMesh

IDirect3DRM3

面をもたない新しいプログレッシブメッシュオブジェクトを生成する。メッシュは、フレームに追加されるまで目に見えない。

構文

HRESULT CreateProgressiveMesh(
  LPDIRECT3DRMPROGRESSIVEMESH *lplpD3DRMProgressiveMesh
  );

パラメータ

lplpD3DRMProgressiveMesh
呼び出しが成功した場合、IDirect3DRMProgressiveMeshインターフェイスへのポインタがセットされるアドレス。

戻り値

成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。

IDirect3DRM3::CreateShadow

IDirect3DRM3

指定のビジュアルと照明を使用して影を作成し、指定の平面にその影を投影する。影も一種のビジュアルであり、ビジュアルを含むフレームに追加する必要がある。

構文

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保持モードの戻り値」を参照すること。

IDirect3DRM3::CreateTexture

IDirect3DRM3

メモリのイメージからテクスチャを作成する。

構文

HRESULT CreateTexture(
  LPD3DRMIMAGE lpImage,
  LPDIRECT3DRMTEXTURE3 *lplpD3DRMTexture3
  );

パラメータ

lpImage
テクスチャのソースを記述するD3DRMIMAGE構造体のアドレス。
lplpD3DRMTexture3
呼び出しが成功した場合、IDirect3DRMTexture3インターフェイスへのポインタがセットされるアドレス。

戻り値

成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。

注意

イメージに関連するメモリは、Direct3D保持モードのバッファにコピーされるのではなく、テクスチャがレンダリングされるたびに使用される。これは、イメージがレンダリング対象およびテクスチャの両方として使用されることを可能にする。

IDirect3DRM3::CreateTextureFromSurface

IDirect3DRM3

指定したDirectDrawサーフェスからテクスチャを作成する。

構文

HRESULT CreateTextureFromSurface(
  LPDIRECTDRAWSURFACE lpDDS,
  LPDIRECT3DRMTEXTURE3 *lplpD3DRMTexture3
  );

パラメータ

lpDDS
テクスチャを格納するDirectDrawSurfaceオブジェクトのアドレス。
lplpD3DRMTexture3
呼び出しが成功した場合、IDirect3DRMTexture3インターフェイスへのポインタがセットされるアドレス。

戻り値

成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。

注意

DirectDrawサーフェスからテクスチャを作成する場合、システムメモリ中にサーフェスを作成するのが最善である。これでソフトウェアデバイスの最適なパフォーマンスが可能になり、Direct3D保持モードがハードウェアデバイスに対してビデオメモリの使用をより効率的に管理できるようになる。

IDirect3DRM3::CreateUserVisual

IDirect3DRM3

アプリケーション定義のビジュアルオブジェクトを生成する。作成されたオブジェクトは、アプリケーション定義ハンドラを使用してシーンに追加したり、レンダリングしたりすることができる。

構文

HRESULT CreateUserVisual(
  D3DRMUSERVISUALCALLBACK fn,
  LPVOID lpArg,
  LPDIRECT3DRMUSERVISUAL *lplpD3DRMUV
  );

パラメータ

fn
アプリケーション定義D3DRMUSERVISUALCALLBACKコールバック関数。

lpArg
コールバック関数に渡されたアプリケーション定義データのアドレス。
lplpD3DRMUV
呼び出しが成功した場合、IDirect3DRMUserVisualインターフェイスへのポインタがセットされるアドレス。

戻り値

成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。

参照

IDirect3DRMUserVisual::Init

IDirect3DRM3::CreateViewport

IDirect3DRM3

デバイス座標が(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」を参照すること。

IDirect3DRM3::CreateWrap

IDirect3DRM3

面とメッシュにテクスチャ座標を割り当てるのに使用できるラッピング関数を作成する。ベクトル[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保持モードの戻り値」を参照すること。

参照

IDirect3DRMWrap

IDirect3DRM3::EnumerateObjects

IDirect3DRM3

各Direct3DRMオブジェクトのfuncパラメータによって指定されるコールバック関数を使用する。

構文

HRESULT EnumerateObjects(
  D3DRMOBJECTCALLBACK func,
  LPVOID lpArg
  );

パラメータ

func
各Direct3DRMObjectオブジェクトおよびアプリケーション定義引数によって使われるアプリケーション定義のD3DRMOBJECTCALLBACKコールバック関数。
lpArg
コールバック関数に渡されたアプリケーション定義データのアドレス。

戻り値

成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。

IDirect3DRM3::GetDevices

IDirect3DRM3

システムで作成されたすべてのDirect3DRMデバイスを返す。

構文

HRESULT GetDevices(
  LPDIRECT3DRMDEVICEARRAY *lplpDevArray
  );

パラメータ

lplpDevArray
Direct3DRMデバイスの結果の配列がセットされるポインタのアドレス。Direct3DRMDeviceArrayオブジェクトの詳細については、「IDirect3DRMDeviceArray」を参照すること。

戻り値

成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。

IDirect3DRM3::GetNamedObject

IDirect3DRM3

指定の名前でDirect3DRMObjectを取得する。

構文

HRESULT GetNamedObject(
  const char *lpName,
  LPDIRECT3DRMOBJECT *lplpD3DRMObject
  );

パラメータ

lpName
検索するオブジェクトの名前。
lplpD3DRMObject
呼び出しが成功した場合に、有効なDirect3DRMObjectポインタで初期化されるポインタのアドレス。

戻り値

成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。

注意

システムがlpNameパラメータで指定した名前のオブジェクトを発見しなかった場合に、このメソッドは、D3DRM_OKを返すが、lplpD3DRMObjectパラメータはNULLとなる。

IDirect3DRM3::GetOptions

IDirect3DRM3

Direct3D保持モードで左手または右手ジオメトリのどちらを使用するかを引き出す。

構文

HRESULT GetOptions(
  LPDWORD lpdwOptions);

パラメータ

lpdwOptions
現在のDirect3D保持モードオプションを示すフラグ値へのポインタ。現在定義されているフラグは、次の通りである。
D3DRMOPTIONS_LEFTHANDED
左手ジオメトリを使用する。これはデフォルト値である。
D3DRMOPTIONS_RIGHTHANDED
右手ジオメトリを使用する。

戻り値

次の値のうち1つを返す。
 
DDERR_INVALIDOBJECT
DDERR_INVALIDPARAMS
DD_OK

注意

D3DRMOPTIONS_LEFTHANDEDD3DRMOPTIONS_RIGHTHANDEDは、ピッキングと光線ピッキングはもちろんのこと、次のオブジェクトにも影響を与える。

このメソッドは、DirectX version 6.0で導入された。

参照

Direct3Dの座標系

IDirect3DRM3::SetOptions

IDirect3DRM3::GetSearchPath

IDirect3DRM3

現在の検索パスを返す。Windowsでは、パスは、セミコロン(;)で区切られたディレクトリのリストである。

構文

HRESULT GetSearchPath(
  DWORD *lpdwSize,
  LPSTR lpszPath
  );

パラメータ

lpdwSize
DWORD値へのポインタ。GetSearchPathが使われたとき、lpszPathの長さを含む必要がある。戻ったときには、現在の検索パスを含むlpszPathの文字列の長さを格納する。このパラメータはNULLにできない。
lpszPath
検索パスを指定するヌル終端の文字列へのポインタ。GetSearchPathが使われたとき、lpszPathがNULLの場合、このメソッドは、lpdwSizeパラメータが指す位置にある現在の文字列の長さを返す。

戻り値

成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。

参照

IDirect3DRM3::SetSearchPath

IDirect3DRM3::Load

IDirect3DRM3

オブジェクトをロードする。

構文

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® ファイルからのオブジェクトのロードが極めて柔軟に行えるようになる。次にその使用法の例を示す。

サンプルコード

IDirect3DRM3::LoadTexture

IDirect3DRM3

指定ファイルから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;
}

IDirect3DRM3::LoadTextureFromResource

IDirect3DRM3

指定のリソースからDirect3DRMTexture2テクスチャをロードする。

構文

HRESULT LoadTextureFromResource(
  HMODULE hModule,
  LPCTSTR strName,
  LPCTSTR strType,
  LPDIRECT3DRMTEXTURE3 *lplpD3DRMTexture
  );

パラメータ

hModule
モジュールのハンドル。そのモジュールの実行可能ファイルがリソースを含む。
strName
テキスチャとして使われるリソース名を指定するヌル終端文字列。
strType
リソースのタイプ名を指定するヌル終端文字列を指す。このパラメータは、以下のリソースのタイプのいずれか、またはユーザ定義タイプにすることができる。
意味
RT_BITMAP ビットマップリソース
RT_RCDATA アプリケーション定義リソース(生データ)
lplpD3DRMTexture
この呼び出しが成功した場合に、有効なIDirect3DRMTexture3オブジェクトで初期化されるポインタのアドレス。

戻り値

成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。

IDirect3DRM3::RegisterClient

IDirect3DRM3

データを関連付けるクライアント (アプリケーション) を登録する。

構文

HRESULT RegisterClient(
  REFGUID rguid,
  LPDWORD lpdwID);

パラメータ

rguid
アプリケーションを表すGUIDへの参照。
lpdwID
データを保持モードオブジェクトに関連付けるために、アプリケーションがIDirect3DRMObject2::SetClientDataIDirect3DRMObject2::GetClientDataとともに使用する一意のIDを受け取るアドレス。

戻り値

次の値のうち1つを返す。
 
DDERR_INVALIDOBJECT
DDERR_INVALIDPARAMS
DDERR_OUTOFMEMORY
DD_OK

注意

アプリケーションはGUIDを渡し、DWORD 識別子を受け取る。次に、この識別子をIDirect3DRMObject2::SetClientDataIDirect3DRMObject2::GetClientDataで使用して、データを保持モードオブジェクトに関連付ける。アプリケーションがIDirect3DRMObject2::SetClientDataを使用する場合、IDirect3DRMObject2::SetClientDataによってアプリケーションが格納する任意のデータは、そのタイプに応じてリリースされる。同じ GUIDを持つこのメソッドを複数回呼び出しても、同じIDが返される。このメソッドは、DirectX version 6.0で導入された。

IDirect3DRM3::SetDefaultTextureColors

IDirect3DRM3

Direct3DRMTexture2オブジェクトに対して使用するデフォルトの色を設定する。

構文

HRESULT SetDefaultTextureColors(
  DWORD dwColors
  );

パラメータ

dwColors
色の数。

戻り値

成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。

注意

このメソッドは、IDirect3DRM3::CreateTextureメソッドの前に使われたときに限りテクスチャの色に影響する。すでに作成されているテクスチャには、何の効果もない。

IDirect3DRM3::SetDefaultTextureShades

IDirect3DRM3

Direct3DRMTexture2オブジェクトに対して使用するデフォルトのシェードを設定する。

構文

HRESULT SetDefaultTextureShades(
  DWORD dwShades
  );

パラメータ

dwShades
シェード数。

戻り値

成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。

注意

このメソッドは、IDirect3DRM3::CreateTextureメソッドの前に使われたときに限りテクスチャのシェードに影響する。すでに作成されているテクスチャには、何の効果もない。

IDirect3DRM3::SetOptions

IDirect3DRM3

Direct3D保持モードで左手または右手ジオメトリのどちらを使用するかをセットする。

構文

HRESULT SetOptions(
  LPDWORD dwOptions);

パラメータ

dwOptions
現在のDirect3D保持モードオプションを示すフラグ値。現在定義されているフラグは、次の通りである。
D3DRMOPTIONS_LEFTHANDED
左手ジオメトリを使用する。これはデフォルト値である。
D3DRMOPTIONS_RIGHTHANDED
右手ジオメトリを使用する。

戻り値

次の値のうち1つを返す。
 
DDERR_INVALIDOBJECT
DDERR_INVALIDPARAMS
DD_OK

注意

D3DRMOPTIONS_LEFTHANDEDD3DRMOPTIONS_RIGHTHANDEDは、ピッキングと光線ピッキングはもちろんのこと、次のオブジェクトにも影響を与える。

このメソッドは、DirectX version 6.0で導入された。

参照

Direct3Dの座標系

IDirect3DRM3::GetOptions

IDirect3DRM3::SetSearchPath

IDirect3DRM3

ディレクトリのリストから現在のファイル検索パスを設定する。Windowsでは、パスは、セミコロン(;)で区切られたリストにする必要がある。

構文

HRESULT SetSearchPath(
  LPCSTR lpPath
  );

パラメータ

lpPath
現在の検索パスとして設定するパスを指定するヌル終端の文字列のアドレス。

戻り値

成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。

注意

デフォルトの検索パスは、D3DPATH環境変数の値が採用される。環境変数が設定されていなければ、検索パスは空になる。ファイルのオープン時、システムは、まず、現在の作業ディレクトリ中でファイルを探し、次に、検索パス中の各ディレクトリをチェックする。

D3DPATHは、デフォルトの検索パスを設定する環境変数である。

参照

IDirect3DRM3::GetSearchPath

IDirect3DRM3::Tick

IDirect3DRM3

Direct3DRMシステムのハートビートを行う。このメソッドが使われると、すべての可動フレームの位置は、現在の運動属性にしたがって更新され、シーンが現在のデバイスにレンダリングされる。また、関連したコールバック関数が、適切なタイミングで呼び出される。このメソッドは、レンダリングサイクルが完了したときに制御を返す。

構文

HRESULT Tick(
  D3DVALUE d3dvalTick
  );

パラメータ

d3dvalTick
IDirect3DRMFrame3::SetRotationおよびIDirect3DRMFrame3::SetVelocityメソッドに対する速度と回転のステップ。

戻り値

成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。

注意

シーンのレンダリングに柔軟性を持たせるため、保持モードの他のメソッドを使用して、このメソッドを実装することもできる。

IDirect3DRM3::UnregisterClient

IDirect3DRM3

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.