アプリケーションは、IDirect3DRMDevice3、IDirect3DRMDevice2およびIDirect3DRMDeviceインターフェイスを使用して出力デバイスと会話する。概要については、「出力デバイス」を参照すること。
IDirect3DRMDevice3は、旧のIDirect3DRMDevice2とIDirect3DRMDeviceインターフェイス中のすべてのメソッドを含むが、ある基準に基づいてテクスチャフォーマットを選択するFindPreferredTextureFormatメソッドを追加し、冗長な状態変更 (状態に現在の値と等しい値の設定) を排除する、次の4つのメソッドも追加する。GetStateChangeOptions、LightStateChange、RenderStateChangeおよびSetStateChangeOptionsである。
IDirect3DRMDevice2は、IDirect3DRMDeviceのすべてのメソッドに加えて、透明性の制御を可能にする2つのメソッド、GetRenderModeとSetRenderMode、1つの初期化メソッドInitFromSurface、さらにIDirect3DRMDeviceオブジェクトではなくIDirect3DRMDevice2オブジェクトを取り出したり初期化する2つの変更メソッドGetDirect3DDevice2とInitFromD3D2を含む。
IDirect3DRMDevice3またはIDirect3DRMDevice2インターフェイスを、それぞれIDirect3DRM3またはIDirect3DRM2インターフェイスから作成するか、あるいは対応するIDirect3DRMDevice3メソッド、InitFromClipper、InitFromD3D2、またはInitFromSurfaceを使用してどちらかのインターフェイスを初期化する場合、そのインターフェイスはIDirect3DDevice3またはIDirect3DDevice2直接モードデバイスとともにそれぞれ機能する。IDirect3DDevice3とIDirect3DDevice2デバイスは、DrawPrimitiveインターフェイスとともに実行バッファもサポートし、プログレッシブメッシュ、アルファブレンディング、透明オブジェクトのソートに必要となる。IDirect3DRMインターフェイスから旧のIDirect3DRMDeviceインターフェイスを作成する場合、IDirect3DRMDevice保持モードインターフェイスはIDirect3DDevice直接モードデバイスとともに機能する。
InitFromClipperとInitFromSurfaceメソッドは、IDirect3DRM3::CreateDeviceを使用してDirect3DRMDevice3オブジェクトを生成する。
InitFromD3D2メソッドは、IDirect3D2直接モードオブジェクトとIDirect3DDevice2直接モードデバイスを使用してIDirect3DDevice2 Direct3D保持モードデバイスを初期化する。
ユーザは、引き続きIDirect3DRMDevice3、IDirect3DRMDevice2、IDirect3DRMDeviceインターフェイスの間を照会することができる。主な相違点は、基底の直接モードデバイスの生成方法にある。
IDirect3DRMDevice3インターフェイスのメソッドは、以下のグループにまとめることができる。
すべてのCOMインターフェイスと同様、IDirect3DRMDevice3インターフェイスはIUnknownインターフェイスメソッドを継承する。IUnknownインターフェイスは、以下の3つのメソッドをサポートする。
AddRef |
QueryInterface |
Release |
さらに、IDirect3DRMDevice3インターフェイスは、IDirect3DRMObjectインターフェイスから以下のメソッドを継承する。
AddDestroyCallback |
Clone |
DeleteDestroyCallback |
GetAppData |
GetClassName |
GetName |
SetAppData |
SetName |
Direct3DRMDevice3オブジェクトは、IDirect3DRM3::CreateDeviceメソッドを呼び出すことによって取得される。
デバイスに変化が発生したとき、アプリケーションに警告を与えるコールバック関数を追加する。システムは、アプリケーションがIDirect3DRMDevice3::Updateメソッドを使ったときにはいつも、必ずこのコールバック関数を呼び出す。
構文
HRESULT AddUpdateCallback(
D3DRMDEVICE3UPDATECALLBACK d3drmUpdateProc,
LPVOID arg
);
パラメータ
- d3drmUpdateProc
- アプリケーション定義コールバック関数D3DRMDEVICE3UPDATECALLBACKへのポインタ。
- arg
- 更新コールバック関数に渡すプライベートデータへのポインタ。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。
注意
IDirect3DRMDevice2::AddUpdateCallbackとIDirect3DRMDevice::AddUpdateCallbackは、d3drmUpdateProcパラメータに対してD3DRMUPDATECALLBACKタイプのコールバックをとる。DirectX version 6.0については、IDirect3DRMDevice3は、より新しいD3DRMDEVICE3UPDATECALLBACKコールバックを導入している。
参照
IDirect3DRMDevice3::DeleteUpdateCallback, IDirect3DRMDevice3::Update, D3DRMDEVICE3UPDATECALLBACK
IDirect3DRMDevice3::AddUpdateCallbackメソッドを使って追加された更新コールバック関数を削除する。
構文
HRESULT DeleteUpdateCallback(
D3DRMDEVICE3UPDATECALLBACK d3drmUpdateProc,
LPVOID arg
);
パラメータ
- d3drmUpdateProc
- アプリケーション定義のD3DRMDEVICE3UPDATECALLBACKコールバック関数のアドレス。
- arg
- 更新コールバック関数に渡されるプライベートなデータへのポインタ。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。
注意
IDirect3DRMDevice2::DeleteUpdateCallbackとIDirect3DRMDevice::DeleteUpdateCallbackは、d3drmUpdateProcパラメータに対してD3DRMUPDATECALLBACKタイプのコールバックをとる。DirectX version 6.0については、IDirect3DRMDevice3は、より新しいD3DRMDEVICE3UPDATECALLBACKコールバックを導入している。
参照
IDirect3DRMDevice3::AddUpdateCallback, IDirect3DRMDevice3::Update, D3DRMDEVICE3UPDATECALLBACK
ユーザの基準を満たし、下層の直接モードデバイスがサポートするテクスチャフォーマットを検索する。テクスチャキャッシュの最適なパフォーマンスを得るためには、この関数を使用してテクスチャサーフェスのピクセルフォーマットを選択する。
構文
HRESULT FindPreferredTextureFormat( DWORD dwBitDepths, DWORD dwFlags, LPDDPIXELFORMAT lpDDPF);
パラメータ
- dwBitDepths
- 要求されたテクスチャフォーマットビット深度。ビット深度が一切受容できないことを示すには、0を指定する。次のDirectDraw ビット深度フラグの1つ以上の論理的な組み合わせを使用して、その他の値を指定する。
- DDBD_4
- DDBD_8
- DDBD_16
- DDBD_24
- DDBD_32
- dwFlags
- 追加の要件を指定するフラグ。デフォルトの設定を使用するには、0を指定する。その他の有効値は、次の値の1つ以上の論理的な組み合わせでなければならない。
- D3DRMFPTF_ALPHA
- 返されるテクスチャフォーマットには、アルファチャネルがなければならない。
- D3DRMFPTF_NOALPHA
- 返されるテクスチャフォーマットには、アルファチャネルがあってはならない。アルファチャネルの欠落を希望するが、欠落を必須としないことを示すには、D3DRMFPTF_ALPHAとD3DRMFPTF_NOALPHAの両フラグを省略する。
- D3DRMFPTF_PALETTIZED
- D3DRMFPTF_PALETTIZED
- 返されるテクスチャフォーマットは、パレット化しなければならない。
- D3DRMFPTF_NOTPALETTIZED
- 返されるテクスチャフォーマットは、パレット化してはならない。パレットの欠落を希望するが、欠落を必須としないことを示すには、D3DRMFPTF_PALETTIZEDとD3DRMFPTF_NOTPALETTIZEDの両フラグを省略する。
- lpDDPF
- テクスチャフォーマットを受け取るポインタ。
戻り値
次の値のうち1つを返す。
D3DRMERR_TEXTUREFORMATNOTFOUND DDERR_INVALIDOBJECT DDERR_INVALIDPARAMS DD_OK FindPreferredTextureFormatは、受入可能なフォーマットを検索できない場合D3DRMERR_TEXTUREFORMATNOTFOUNDを返す。
注意
このメソッドは、DirectX version 6.0とともに導入された。
IDirect3DRMDevice3::SetBufferCountメソッドに対する呼び出しでセットされた値を取得する。
構文
DWORD GetBufferCount( );
戻り値
バッファの数であり、シングルバッファリングに対しては1、ダブルバッファリングに対しては2、などを返す。
デバイスのカラーモデルを取得する。
構文
D3DCOLORMODEL GetColorModel( );
戻り値
Direct3Dカラーモデル(RGBまたはモノクロ)を記述するD3DCOLORMODEL列挙型から値を返す。
参照
「カラーモデル」
IDirect3DDevice2直接モードデバイスへのポインタを取得する。
構文
HRESULT GetDirect3DDevice2(
LPDIRECT3DDEVICE2 *lplpD3DDevice
);
パラメータ
- lplpD3DDevice
- IDirect3DDevice2直接モードデバイスオブジェクトへのポインタを使用して初期化されるポインタのアドレス。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。
注意
IDirect3DDevice2デバイスは、DrawPrimitiveインターフェイスとともに実行バッファもサポートし、プログレッシブメッシュ、アルファブレンディング、および透明オブジェクトのソートに必要となる。
デバイスのディザリングフラグを取得する。
構文
BOOL GetDither( );
戻り値
ディザリングフラグがセットされていればTRUE、そうでなければFALSEを返す。
参照
デバイスの高さをピクセル単位で取得する。このメソッドは、便利な関数である。
構文
DWORD GetHeight( );
戻り値
高さを返す。
デバイスのレンダリングクオリティを取得する。
構文
D3DRMRENDERQUALITY GetQuality( );
戻り値
D3DRMRENDERQUALITY列挙型で表された列挙型の1つまたは複数のメンバを返す。
参照
現在の透明性フラグを取得する。
構文
DWORD GetRenderMode( );
戻り値
現在の透明性フラグの値を返す。
注意
透明性フラグは、以下の値を持つ。
参照
シェーディングに使用される色のランプでのシェード数を取得する。
構文
DWORD GetShades( );
戻り値
シェード数を返す。
参照
レンダリングまたは照明状態に関連付けられた状態変更オプションフラグを取得する。詳細については、「冗長な状態変更の削除」を参照すること。
構文
HRESULT GetStateChangeOptions(
DWORD dwStateClass,
DWORD dwStateNum,
LPDWORD pdwFlags
);
パラメータ
- 該当する状態が属する状態のクラス。この値には、D3DRMSTATECHANGE_LIGHTまたはD3DRMSTATECHANGE_RENDERをセットできる。
- dwStateNum
- 該当するD3DRENDERSTATEまたはD3DLIGHTSTATEの番号。値0は、所定のクラスのすべての状態が影響を受けることを示す。
- pdwFlags
- オプションフラグへのポインタ。次の値のどれか1つを含む。
- D3DRMSTATECHANGE_NONVOLATILE
- D3DRMSTATECHANGE_VOLATILE
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。
注意
このメソッドは、DirectX version 6.0とともに導入された。
次のコード例は、テクスチャハンドルレンダリング状態に関するオプションを取得する。
lpDirect3DRMDev3->GetStateChangeOptions(D3DRMSTATECHANGE_RENDER, D3DRENDERSTATE_TEXTUREHANDLE, &dwFlags);
参照
デバイスの現在のテクスチャクオリティパラメータを取得する。テクスチャクオリティは、RGBデバイスだけに関係する。
構文
D3DRMTEXTUREQUALITY GetTextureQuality( );
戻り値
D3DRMTEXTUREQUALITY列挙型のメンバの1つを返す。
参照
デバイスが作成されて以降、そのデバイスに描画された三角形の数を取得する。このメソッドは、便利な関数である。
構文
DWORD GetTrianglesDrawn( );
戻り値
三角形の数を返す。
注意
三角形の数は、レンダラに渡されたが、裏(カメラの向きと逆の面)に隠されたために描画されなかったものを含む。視錐台の外側にあって拒絶された三角形は含まれない。
デバイスから現在構築されているビューポートを表すDirect3DRMViewportArrayオブジェクトを構築する。
構文
HRESULT GetViewports(
LPDIRECT3DRMVIEWPORTARRAY *lplpViewports
);
パラメータ
- lplpViewports
- 呼び出しが成功した場合に、有効なDirect3DRMViewportArrayオブジェクトで初期化されるポインタのアドレス。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。
デバイスのピクセル単位の幅を取得する。このメソッドは、便利な関数である。
構文
DWORD GetWidth( );
戻り値
ピクセル単位で、デバイスの幅を返す。
指定のデバイスのワイヤフレームオプションを取得する。
構文
DWORD GetWireframeOptions( );
戻り値
以下の値のビットごとのOR演算の結果を返す。
- D3DRMWIREFRAME_CULL
- 裏に隠された面は、描画されない。
- D3DRMWIREFRAME_HIDDENLINE
- ワイヤフレームレンダリングされた線は、隣接のオブジェクトで隠される。
Microsoft® Windows®プラットフォームでは未実装である。
構文
HRESULT Init(
ULONG width,
ULONG height
);
IDirect3DRM3::CreateDeviceを使用して、指定のDirectDrawClipperオブジェクトのIDirect3DDevice2デバイスを初期化する。
構文
HRESULT InitFromClipper(
LPDIRECTDRAWCLIPPER lpDDClipper,
LPGUID lpGUID,
int width,
int height
);
パラメータ
- lpDDClipper
- 初期化手段として使用するDirectDrawClipperオブジェクトへのポインタ。
- lpGUID
- 使用するDirect3Dデバイスドライバ。
- width, height
- ピクセル単位でのデバイスの幅と高さ。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。
IDirect3D2直接モードオブジェクトとIDirect3DDevice2直接モードデバイスから、IDirect3DRMDevice2保持モードデバイスを初期化する。
構文
HRESULT InitFromD3D2(
LPDIRECT3D2 lpD3D,
LPDIRECT3DDEVICE2 lpD3DIMDev
);
パラメータ
- lpD3D
- 保持モードデバイスを初期化するのに使用するIDirect3D2直接モードオブジェクトへのポインタ。
- lpD3DIMDev
- 保持モードデバイスを初期化するのに使用する IDirect3DDevice2直接モードデバイスへのポインタ。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。
注意
IDirect3DRMDevice2から初期化されたIDirect3DDevice2デバイスは、DrawPrimitiveインターフェイスとともに実行バッファもサポートし、プログレッシブメッシュ、アルファブレンディング、および透明オブジェクトのソートに必要になる。
IDirect3DRM3::CreateDeviceを使用して、指定したDirectDrawサーフェスからIDirect3DDevice2デバイスを初期化する。
構文
HRESULT InitFromSurface(
LPGUID lpGUID,
LPDIRECTDRAW lpDD,
LPDIRECTDRAWSURFACE lpDDSBack
);
パラメータ
- lpGUID
- 使用するDirect3Dデバイスを識別するグローバルユニーク識別子(GUID)へのポインタ。
- lpDD
- DirectDrawSurfaceを生成したDirectDrawオブジェクトのインターフェイスへのポインタ。
- lpDDSBack
- DirectDrawSurfaceバックバッファのインターフェイスへのポインタ。そのバックバッファ上でデバイスがレンダリングを行う。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。
注意
初期化されたIDirect3DRMDevice2デバイスは、DrawPrimitiveインターフェイスとともに実行バッファをサポートし、プログレッシブメッシュ、アルファブレンディング、および透明オブジェクトのソートに必要となる。
照明状態を変更するか、またはDirect3D保持モードにレンダリング状態への変更を通知する。D3DRMSTATECHANGE_NONVOLATILEフラグがレンダリング状態に関連付けられている場合、保持モードはIDirect3DRMDevice3を使用して行った冗長な状態変更を排除する(状態を現在の値に等しい値にセットすることをしない)。詳細については、「冗長な状態変更の削除」を参照すること。
構文
HRESULT LightStateChange(
DWORD dwStateNum,
DWORD dwVal,
DWORD dwFlags
);
パラメータ
- dwStateNum
- 該当するD3DLIGHTSTATE番号。
- dwVal
- 状態の新しい値。
- dwFlags
- 保持モードがキャッシュのみを更新するかどうかを示すフラグ。このフラグがD3DRMSTATECHANGE_UPDATEONLYにセットされている場合、内部キャッシュに保持されている値のみ更新される。D3DRMSTATECHANGE_UPDATEONLYを使用して、状態変更を示すことができる。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。
注意
このメソッドは、DirectX version 6.0とともに導入された。
次のコードはマテリアルハンドル照明状態をセットし、D3DRMSTATECHANGE_NONVOLATILEフラグがその状態に関連付けられている場合には冗長な変更を排除する。
lpDirect3DRMDev3->LightStateChange(D3DLIGHTSTATE_MATERIAL, hMat, 0);次にフォグモードへの変更を示す。
lpDirect3DRMDev3->LightStateChange(D3DLIGHTSTATE_FOGMODE, D3DFOG_NONE, D3DRMSTATECHANGE_UPDATEONLY);
参照
レンダリング状態を変更するか、またはレンダリング状態への変更を示す。D3DRMSTATECHANGE_NONVOLATILEフラグがレンダリング状態に関連付けられている場合、保持モードはIDirect3DRMDevice3を使用して行った冗長な状態変更を排除する(状態を現在の値に等しい値にセットすることをしない)。詳細については、「冗長な状態変更の削除」を参照すること。
構文
HRESULT RenderStateChange(
DWORD dwStateNum,
DWORD dwVal,
DWORD dwFlags
);
パラメータ
- dwStateNum
- 該当するD3DRENDERSTATE番号。
- dwVal
- 状態の新しい値。
- dwFlags
- キャッシュのみ更新するかどうかを示すフラグ。このフラグがD3DRMSTATECHANGE_UPDATEONLYにセットされている場合、内部キャッシュに保持されている値のみ更新される。D3DRMSTATECHANGE_UPDATEONLYを使用して、状態の変更を示すことができる。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。
注意
このメソッドは、DirectX version 6.0とともに導入された。
次のコードは塗りつぶしモードレンダリング状態をセットし、D3DRMSTATECHANGE_NONVOLATILEフラグがその状態に関連付けられている場合には冗長な変更を排除する。
lpDirect3DRMDev3->RenderStateChange(D3DRENDERSTATE_FILLMODE, D3DFILL_SOLID, 0);次のコードは、テクスチャハンドルレンダリング状態への変更を示す。
lpDirect3DRMDev3->RenderStateChange(D3DRENDERSTATE_TEXTUREHANDLE, hTex, D3DRMSTATECHANGE_UPDATEONLY);
参照
現在アプリケーションで使用されているバッファの数を設定する。
構文
HRESULT SetBufferCount(
DWORD dwCount
);
パラメータ
- dwCount
- バッファの数を、シングルバッファリングに対しては1、ダブルバッファリングに対しては2などと指定する。デフォルト値は1であり、シングルバッファリングウィンドウ操作に対してのみ有効である。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。
注意
アプリケーションが、ダブルバッファリングやトリプルバッファリングを行うときは、このメソッドで、使用するバッファ数をシステムに通知し、システムが各フレームに対して、ウィンドウのどの部分をクリアおよび更新するかを計算できるようにしなければならない。
参照
デバイスのディザリングフラグを設定する。
構文
HRESULT SetDither(
BOOL bDither
);
パラメータ
- bDither
- デバイスの新しいディザリングモード。デフォルトはTRUEである。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。
参照
デバイスのレンダリングクオリティを設定する。
構文
HRESULT SetQuality (
D3DRMRENDERQUALITY rqQuality
);
パラメータ
- rqQuality
- D3DRMRENDERQUALITY列挙型で表された列挙型の1つまたは複数のメンバ。デフォルト設定値は、D3DRMRENDER_FLATである。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。
注意
レンダリングクオリティは、デバイスのレンダリング面上で実行されるレンダリングのクオリティの最大値である。
オブジェクトクオリティには、3つのコンポーネントがある。すなわち、シェーディングモード (フラットまたはグーローで、フォンは実装されていない。デフォルトはグーローシェーディング)、照明タイプ (オンまたはオフ) および塗りつぶしモード (ポイント、ワイヤフレームまたはソリッド) である。
デバイスのクオリティを設定するには、SetQualityを用いる。デフォルトでは、デバイスクオリティはD3DRMRENDER_FLAT (フラットシェーディング、照明オンおよびソリッド塗りつぶし) である。
Direct3DRMProgressiveMesh 、またはDirect3DRMMeshBuilder3オブジェクトのクオリティは、それぞれのSetQualityメソッドを用いて設定することができる。デフォルトでは、これらのオブジェクトのクオリティは、D3DRMRENDER_GOURAUD(グーローシェーディング、照明オンおよびソリッド塗りつぶし)である。
ヒント: グーローシェーディングは、詳細レベルを頻繁にまたは素早く変更するプログレッシブメッシュオブジェクトについて、よりよいパフォーマンスを得られる。
Direct3D保持モードは、デバイスやオブジェクトの個々のコンポーネントに対する現在の設定の中で、最も低位のクオリティで、オブジェクトにレンダリングを行う。たとえば、オブジェクトの現在のクオリティ設定がD3DRMRENDER_GOURAUDで、デバイスがD3DRMRENDER_FLATであると、オブジェクトはフラットシェーディング、ソリッド塗りつぶし、および照明オンでレンダリングされる。
オブジェクトの現在のクオリティ設定がD3DRMSHADE_GOURAUD|D3DRMLIGHT_OFF|D3DRMFILL_WIREFRAMEで、デバイスのクオリティ設定がD3DRMSHADE_FLAT|D3DRMLIGHT_ON|D3DRMFILL_POINTであると、オブジェクトはフラットシェーディング、照明オフ、およびポイント塗りつぶしモードでレンダリングされる。
これらのルールは、Direct3DRMMeshBuilder3オブジェクトおよびDirect3DRMProgressiveMeshオブジェクトに適用される。しかし、Direct3DRMMeshオブジェクトはこれらのルールに従わない。メッシュオブジェクトはデバイスのクオリティ設定を無視し、グループクオリティ設定を用いる(デフォルトでD3DRMRENDER_GOURAUD)。
参照
透明モードを設定する。モードタイプは、オブジェクトをどの程度透明にレンダリングするかを決定する。デフォルトモードでは、透明点描で透明オブジェクトをレンダリングする。
構文
HRESULT SetRenderMode(
DWORD dwFlags
);
パラメータ
- dwFlags
- 1つまたは複数の透明モードフラグ。デフォルト (dwFlags = 0)では、透明モードを透明点描に設定する。点描 (または「スクリーンドア」) による透明モードは、あるイメージ中のいくつかのピクセルをその他のイメージのピクセルで置換 (あたかも、あるイメージを2番目のイメージで塗られたスクリーンドアを通して見るかのように) することにより達成される。
さらに、フラグは1つ以上の、以下の値を持つことができる。
- D3DRMRENDERMODE_BLENDEDTRANSPARENCY (dwFlags = 1) は、透明モードをアルファブレンディングに設定する。ブレンディングによる透明モードは、各ピクセルでカラー値を追加し2つのイメージを組み合わせることにより達成される。
- D3DRMRENDERMODE_DISABLESORTEDALPHAZWRITE (dwFlags = 32) は、ソートされた透明オブジェクトを描画する際、zバッファに深度情報を書き込まないことを指定する。
- D3DRMRENDERMODE_LIGHTINMODELSPACE (dwFlags = 8) は、予約済み。使用しないこと。
- D3DRMRENDERMODE_SORTEDTRANSPARENCY (dwFlags = 2) は、シーン中の透明ポリゴンが第2パスでバッファリング、ソート、およびレンダリングされるように透明モードを設定する。このフラグは、D3DRMRENDERMODE_BLENDEDTRANSPARENCYフラグも同時にセットされていない場合には、何の効果もない。外部ビジュアルまたはユーザビジュアル中の透明ポリゴンはソートされない。ネイティブ D3DRM ビジュアル (D3DRMMeshオブジェクトとD3DRMMeshBuilderオブジェクトなど) のみソートされる。
- D3DRMRENDERMODE_VIEWDEPENDENTSPECULAR (dwFlags = 16) は、光源方向とビューアの位置の両方に依存する、より現実的な反射光を可能にする。DirectX Foundationの以前のバージョンのみ、ビューアの位置を考慮しないフラットな反射光をサポートする。このフラグがセットされていると、Direct3D直接モードはD3DLIGHT2構造体を使用して、Direct3D直接モードのIDirect3DLight::SetLight呼び出し時に照明タイプを定義する。このフラグがセットされていない場合、D3DRMはD3DLIGHT構造体を使用し、DirectXの以前のバージョンのライティング動作を得ることになる。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。
注意
D3DRMRENDERMODE_BLENDEDTRANSPARENCYおよびD3DRMRENDERMODE_SORTEDTRANSPARENCYの両フラグが、同時にセットされていれば、2つの透明オブジェクトが、一方を他方でレンダリングするように保証し、イメージは、期待通りのビジュアル効果を作り出すように正しい順で混合される。
D3DRMRENDERMODE_SORTEDTRANSPARENCYは、アルファポリゴンの三角形ごとの、後ろから前へのソートをオンにする。ネイティブ D3DRM ビジュアル (D3DRMMeshオブジェクトとD3DRMMeshBuilderオブジェクトなど) のみソートされる。外部ビジュアルの三角形をソートリストに追加することはできない。
D3DRMRENDERMODE_BLENDEDTRANSPARENCYフラグは、点描アルファに対抗して真のアルファブレンディングをオンにする。真のアルファブレンディングでは、重複する三角形のピクセルはまとめて混合される。点描アルファでは、前面にある三角形のピクセルのいくつかは、下にある三角形を表示するような描画が行われない (これは、スクリーンドアの透明とも呼ばれる)。点描アルファを実行する場合、三角形をどのような順序でレンダリングするかにかかわらず、結果が同じであるため、三角形をソートする必要はない。
SetSortModeに対する有効なパラメータは、0 (ソートなしの点描アルファ)、BLENDEDTRANSPARENCY (ソートなしの真のアルファ)、およびBLENDEDTRANSPARENCYとSORTEDTRANSPARENCY (三角形ごとにソートされた真のアルファ) の両方だけである。
参照
モノクロ (ランプ) モデルシェーディングに使用される色のランプでのシェード数を設定する。
構文
HRESULT SetShades(
DWORD ulShades
);
パラメータ
- ulShades
- 新しいシェード数。このパラメータは、2の累乗でなければならない。デフォルトは、32である。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。
参照
1つ以上のレンダリングまたは照明状態に関連付けられたオプションフラグを変更する。すべてのレンダリングと照明状態のデフォルト値は、D3DRMSTATECHANGE_VOLATILEである。D3DRMSTATECHANGE_NONVOLATILEフラグがレンダリングまたは照明状態に関連付けられている場合、Direct3D保持モードはその値をキャッシュし、冗長な変更を排除する (状態を現在の値に等しい値にセットすることをしない)。しかし、LightStateChangeまたはRenderStateChangeメソッドのどちらかによっていつ状態を変更したかを示さなければならない。詳細については、「冗長な状態変更の削除」を参照すること。
構文
HRESULT SetStateChangeOptions(
DWORD dwStateClass,
DWORD dwStateNum,
DWORD dwFlags
);
パラメータ
- dwStateClass
- 該当する状態が属する状態のクラス。この値には、D3DRMSTATECHANGE_LIGHTまたはD3DRMSTATECHANGE_RENDERをセットできる。
- dwStateNum
- 該当するD3DRENDERSTATEまたはD3DLIGHTSTATEの番号。値0は、所定のクラスのすべての状態が影響を受けることを示す。
- dwFlags
- オプションフラグ。次の値のどれか1つである。
- D3DRMSTATECHANGE_NONVOLATILE
- D3DRMSTATECHANGE_VOLATILE
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。
注意
このメソッドは、DirectX version 6.0とともに導入された。
次のコードは、すべてのレンダリング状態でD3DRMSTATECHANGE_NONVOLATILEフラグをオンにセットする。
lpDirect3DRMDev3->SetStateChangeOptions(D3DRMSTATECHANGE_RENDER, 0, D3DRMSTATECHANGE_NONVOLATILE);次のコードは、テクスチャハンドルレンダリング状態でD3DRMSTATECHANGE_VOLATILEフラグをオンにセットする。
lpDirect3DRMDev3->SetStateChangeOptions(D3DRMSTATECHANGE_RENDER, D3DRENDERSTATE_TEXTUREHANDLE, D3DRMSTATECHANGE_VOLATILE);
参照
デバイスに対するテクスチャクオリティを設定する。
構文
HRESULT SetTextureQuality(
D3DRMTEXTUREQUALITY tqTextureQuality
);
パラメータ
- tqTextureQuality
- D3DRMTEXTUREQUALITY列挙型のメンバの1つ。デフォルトは、D3DRMTEXTURE_NEARESTである。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。
参照
レンダリングされているイメージをディスプレイにコピーする。また、デバイスドライバにハートビート関数も与える。そして、イメージをいつ更新するかを知らせる。
構文
HRESULT Update( );
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。
注意
このメソッドに対する各呼び出しは、システムにアプリケーション定義コールバック関数のD3DRMDEVICE3UPDATECALLBACKを呼び出させる。コールバック関数を追加するには、IDirect3DRMDevice3::AddUpdateCallbackメソッドを使用する。
IDirect3DRMDevice2::UpdateとIDirect3DRMDevice::Updateは、システムがD3DRMUPDATECALLBACKタイプコールバックを呼び出すようにする。DirectX version 6.0については、IDirect3DRMDevice3は、より新しいD3DRMDEVICE3UPDATECALLBACKコールバックを導入する。
参照
IDirect3DRMDevice3::AddUpdateCallback, D3DRMDEVICE3UPDATECALLBACK
トップに戻る
© 1999 Microsoft and/or its suppliers. All rights reserved. Terms of Use.