IDirect3DRMProgressiveMesh

メッシュは、ポリゴン面のセットから構成されるビジュアルオブジェクトである。メッシュは、頂点のセットと面のセットを定義する。メッシュの詳細については、「IDirect3DRMMesh」を参照すること。

プログレッシブメッシュは、ベースメッシュ (粗いバージョン) およびメッシュをさらに精製するために使用される頂点分割レコードのセットとして格納されるメッシュである。すなわち、プログレッシブな精製が可能である。これによって、メッシュ用のレンダリングの詳細レベルをセットし、リモートソースからのプログレッシブダウンロードも可能になる。

プログレッシブメッシュは、Microsoft® Direct3D®保持モードのビジュアルであり、ビジュアル処理の標準的な方法で使用することができる。すなわち、プログレッシブメッシュは、フレーム階層に追加すること、複数回のインスタンス化、およびピックも可能である。

IDirect3DRMProgressiveMeshインターフェイスのメソッドを使用して、レンダリングする頂点または面の数をセットし、レンダリング詳細を制御することができる。レンダリングに必要な最小詳細レベルを指定することもできる。通常、プログレッシブメッシュは、ベースメッシュが一度使用可能になるとレンダリングされるが、IDirect3DRMProgressiveMesh::SetMinRenderDetailメソッドによってレンダリングの前にそれ以上の詳細レベルが必要であると指定することができる。また、IDirect3DRMProgressiveMesh::CreateMeshメソッドを使用して、プログレッシブメッシュ固有の状態からDirect3DRMMeshオブジェクトを構築することもできる。

プログレッシブメッシュを、ファイル、リソース、メモリ、またはURLからロードすることができる。ローディングは同期式でも非同期式でも行える。ダウンロードの状態はIDirect3DRMProgressiveMesh::GetLoadStatusメソッドによってチェックし、IDirect3DRMProgressiveMesh::Abortメソッドでダウンロードを終了することができる。ローディングが非同期式の場合、ロードの進行状態を調べるためにIDirect3DRMProgressiveMesh::RegisterEventsIDirect3DRMProgressiveMesh::GetLoadStatusメソッドを介してイベントを使用するかどうかはアプリケーション次第である。

Direct3DRMProgressiveMeshオブジェクトは、IDirect3DRM3::CreateProgressiveMeshメソッドを使うことによって作成される。作成後、オブジェクトは階層に追加できるが、少なくともベースメッシュが使用可能になるまで、レンダリングされない。

標準的なIUnknownおよびIDirect3DRMObjectメソッドに加えて、このAPIは、以下のメンバを含む。

メッシュの生成とコピー Clone
CreateMesh
Duplicate
GetBox
ロード Abort
GetLoadStatus
Load
クオリティの設定 SetQuality
GetQuality
詳細の管理 GetDetail
GetFaceDetail
GetFaceDetailRange
GetVertexDetail
GetVertexDetailRange
SetDetail
SetFaceDetail
SetMinRenderDetail
SetVertexDetail
イベントの登録 RegisterEvents

すべてのCOMインターフェイスと同様、IDirect3DRMProgressiveMeshインターフェイスはIUnknownインターフェイスメソッドを継承する。IUnknownインターフェイスは、以下の3つのメソッドをサポートする。
AddRef
QueryInterface
Release

さらに、IDirect3DRMProgressiveMeshインターフェイスは、IDirect3DRMObjectインターフェイスから以下のメソッドを継承する。
AddDestroyCallback
Clone
DeleteDestroyCallback
GetAppData
GetClassName
GetName
SetAppData
SetName

IDirect3DRMProgressiveMesh::Abort

IDirect3DRMProgressiveMesh

現在アクティブなダウンロードを中止する。

構文

HRESULT Abort(
  DWORD dwFlags
  )

パラメータ

dwFlags
0でなければならない。

戻り値

成功すればD3DRM_OK、失敗すれば次のいずれかのエラーを返す。
D3DRMERR_INVALIDOBJECT
D3DRMERR_INVALIDPARAMS

注意

このメソッドが使われる前にベースメッシュがダウンロードされている場合、その効果は、プログレッシブメッシュがロードされ、分割頂点が有効な状態にあり、プログレッシブメッシュがレンダリング可能である場合と同じである。他のプログレッシブメッシュメソッドも使うことができる。IDirect3DRMProgressiveMesh::Abortを呼び出す前にベースメッシュがダウンロードされておらず、シーンにプログレッシブメッシュを追加した場合、IDirect3DRMViewport2::Renderは成功するが、プログレッシブメッシュへのレンダリングは行われない。また、プログレッシブメッシュを使用するとき (たとえば、メッシュやクローンを作成するため) にベースメッシュがダウンロードされていなければ、呼び出しはD3DRMERR_NOTENOUGHDATAを返す。

IDirect3DRMProgressiveMesh::Clone

IDirect3DRMProgressiveMesh

現在ロードされているDirect3DRMProgressiveMeshオブジェクトのコピーを作成する。

構文

HRESULT Clone(
  LPDIRECT3DRMPROGRESSIVEMESH *lplpD3DRMPMesh
  )

パラメータ

lplpD3DRMPMesh
新しく生成されるDirect3DRMProgressiveMeshオブジェクトへのポインタでセットされるDirect3DRMProgressiveMeshポインタのアドレス。

戻り値

成功すればD3DRM_OK、失敗すれば次のいずれかのエラーを返す。
D3DRMERR_CONNECTIONLOST
D3DRMERR_INVALIDOBJECT
D3DRMERR_INVALIDPARAMS
D3DRMERR_NOTENOUGHDATA

注意

クローン中のプログレッシブメッシュには、少なくともそのベースメッシュをロードしておかなければならない。現在、非同期でロード中のプログレッシブメッシュ上でこのメソッドを使うと、クローンされたメッシュはロードしているプログレッシブメッシュがクローンされたときに持っていた詳細レベルしか持たない。複製後にロードされた分割頂点は、クローンされたメッシュでは利用できない。

このメソッドはプログレッシブメッシュの内部データを共有しようとはしないが、IDirect3DRMProgressiveMesh::Duplicateは共有しようとする。

参照

IDirect3DRMProgressiveMesh::Duplicate

IDirect3DRMProgressiveMesh::CreateMesh

IDirect3DRMProgressiveMesh

現在の詳細レベルでメッシュを作成する。

構文

HRESULT CreateMesh(
  LPDIRECT3DRMMESH *lplpD3DRMMesh
  )

パラメータ

lplpD3DRMMesh
新しく生成されるDirect3DRMMeshオブジェクトへのポインタでセットされるDirect3DRMMeshポインタへのポインタ。

戻り値

成功すればD3DRM_OK、失敗すれば次のいずれかのエラーを返す。
D3DRMERR_CONNECTIONLOST
D3DRMERR_INVALIDOBJECT
D3DRMERR_INVALIDPARAMS
D3DRMERR_NOTENOUGHDATA

注意

アプリケーションが、まだ使用可能になっていない詳細レベルを要求するか、またはベースメッシュが、まだ使用可能になっていないかのいずれかの場合には、このメソッドはエラーD3DRMERR_NOTENOUGHDATAを返す。

IDirect3DRMProgressiveMesh::Duplicate

IDirect3DRMProgressiveMesh

Direct3DRMProgressiveMeshオブジェクトのコピーを作成する。このコピーは、オリジナルと幾何図形や面データをすべて共有する。しかし、オリジナルとは別に詳細レベルを設定することができる。これは、同一のメッシュデータを階層の異なる部分で、ただし、異なる詳細レベルで使用できるようにする。本質的に、フレーム階層内にプログレッシブメッシュの2つのインスタンスがあると言える。

構文

HRESULT Duplicate(
  LPDIRECT3DRMPROGRESSIVEMESH *lplpD3DRMPMesh
  )

パラメータ

lplpD3DRMPMesh
新しく生成されるDirect3DRMProgressiveMeshオブジェクトへのポインタでセットされるDirect3DRMProgressiveMeshポインタのアドレス。

戻り値

失敗すれば次のいずれかのエラーを返す。
D3DRMERR_CONNECTIONLOST
D3DRMERR_INVALIDOBJECT
D3DRMERR_INVALIDPARAMS
D3DRMERR_NOTENOUGHDATA

注意

複製中のプログレッシブメッシュには、少なくともそのベースメッシュをロードしておかなければならない。現在、非同期でロード中のプログレッシブメッシュ上でこのメソッドを使うと、複製されたメッシュはロードしているプログレッシブメッシュが複製されたときに持っていた詳細レベルしか持たない。複製後にロードされた分割頂点は、複製されたメッシュでは利用できない。

プログレッシブメッシュは、ベースメッシュを表すデータセットと、分割頂点を表すデータセットを持っている。ベースメッシュデータおよびプログレッシブメッシュの現状や現在の詳細レベルを記述するデータは、複製されたメッシュ間で共有されない。しかし、分割頂点データは共有される。このメソッドはプログレッシブメッシュの新しいインスタンスを作成する。このインスタンスは、オリジナルと幾何図形や面データをすべて共有するが、その詳細レベルはオリジナルとは無関係に設定することができる。

IDirect3DRMProgressiveMesh::GetBox

IDirect3DRMProgressiveMesh

Direct3DRMProgressiveMeshオブジェクトを含む境界ボックスを取得する。境界ボックスは、各次元で、子フレームを基準とする最小および最大の座標を与える。

構文

HRESULT GetBox(
  D3DRMBOX *lpD3DRMBox
  );

パラメータ

lpD3DRMBox
境界ボックスの座標がセットされるD3DRMBOX構造体のアドレス。

戻り値

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

IDirect3DRMProgressiveMesh::GetDetail

IDirect3DRMProgressiveMesh

0.0と1.0の間に正規化された現在の詳細レベルのプログレッシブメッシュを返す。

構文

HRESULT GetDetail(
  LPD3DVALUE lpdvVal
  )

パラメータ

lpdvVal
現在の詳細レベルのプログレッシブメッシュがセットされるD3DVALUEのアドレス。

戻り値

成功すればD3DRM_OK、失敗すれば次のいずれかのエラーを返す。
D3DRMERR_CONNECTIONLOST
D3DRMERR_INVALIDOBJECT
D3DRMERR_INVALIDPARAMS
D3DRMERR_PENDING

注意

ベースメッシュがダウンロードされていなければ、このメソッドは、D3DRMERR_PENDINGを返す。要求されている詳細レベルが設定されていれば、戻り値は、要求レベルが満足されるまで以降の呼び出しごとに増加される。レベルが要求されていなければ、詳細レベルは、すべての分割頂点のダウンロードが完了するまで上昇する。

正規化された値0.0は頂点の最小数を表し (ベースメッシュ中の頂点数)、正規化された値1.0は頂点の最大数を表す。

IDirect3DRMProgressiveMesh::GetFaceDetail

IDirect3DRMProgressiveMesh

プログレッシブメッシュにある面の数を取得する。

構文

HRESULT GetFaceDetail(
  LPDWORD lpdwCount
  )

パラメータ

lpdwCount
プログレッシブメッシュの面の数がセットされるDWORDのアドレス。

戻り値

成功すればD3DRM_OK、失敗すれば次のいずれかのエラーを返す。
D3DRMERR_CONNECTIONLOST
D3DRMERR_PENDING
D3DRMERR_INVALIDOBJECT
D3DRMERR_INVALIDPARAMS

注意

面の数が利用できなければ、このメソッドはD3DRMERR_PENDINGを返す。

IDirect3DRMProgressiveMesh::GetFaceDetailRange

IDirect3DRMProgressiveMesh

プログレッシブメッシュで使用可能な最小および最大の面カウントを返す。

構文

HRESULT GetFaceDetailRange(
  LPDWORD lpdwMinFaces,
  LPDWORD lpdwMaxFaces
  )

パラメータ

lpdwMinFaces
面の最小数がセットされるDWORD値のアドレス。
lpdwMaxFaces
面の最大数がセットされるDWORD値のアドレス。

戻り値

成功すればD3DRM_OK、失敗すれば次のいずれかのエラーを返す。
D3DRMERR_CONNECTIONLOST
D3DRMERR_INVALIDOBJECT
D3DRMERR_INVALIDPARAMS
D3DRMERR_PENDING

注意

面カウントが取得できない場合には、D3DRMERR_PENDINGを返す。

IDirect3DRMProgressiveMesh::GetLoadStatus

IDirect3DRMProgressiveMesh

ロードの現在の状態をアプリケーションが照会することを可能にする。

構文

HRESULT GetLoadStatus(
  LPD3DRMPMESHLOADSTATUS lpStatus
  )

パラメータ

lpStatus
プログレッシブメッシュのロード状態を含むD3DRMPMESHLOADSTATUS構造体のアドレス。

戻り値

成功すればD3DRM_OK、失敗すれば次のいずれかのエラーを返す。
D3DRMERR_CONNECTIONLOST
D3DRMERR_INVALIDOBJECT
D3DRMERR_INVALIDPARAMS

注意

メッシュのレンダリングが可能な(ベースメッシュのダウンロードが完了し、データが壊れていない)場合には、dwFlagsメンバには、D3DRMPMESHSTATUS_RENDERABLEを格納する。ダウンロードが割り込みを受けた場合には、dwFlagsメンバには、D3DRMPMESHSTATUS_INTERRUPTEDを格納する。

IDirect3DRMProgressiveMesh::GetQuality

IDirect3DRMProgressiveMesh

プログレッシブメッシュのレンダリングクオリティを指定するD3DRMRENDERQUALITY列挙型のメンバを取得する。

構文

HRESULT GetQuality(
  LPD3DRMRENDERQUALITY lpQuality
  );

パラメータ

lpQuality
成功すれば、レンダリングクオリティを指定するD3DRMRENDERQUALITYメンバへのポインタ。

戻り値

成功すればD3DRM_OK、失敗すれば次のいずれかのエラーを返す。

D3DRMERR_BADOBJECT
プログレッシブメッシュは無効。
D3DRMERR_BADVALUE
D3DRMRENDERQUALITYメンバへのポインタは無効。

参照

IDirect3DRMProgressiveMesh::SetQuality

IDirect3DRMProgressiveMesh::GetVertexDetail

IDirect3DRMProgressiveMesh

プログレッシブメッシュにある頂点の数を返す。

構文

HRESULT GetVertexDetail(
  LPDWORD lpdwCount
  )

パラメータ

lpdwCount
プログレッシブメッシュにある頂点の数がセットされるDWORDのアドレス。

戻り値

成功すればD3DRM_OK、失敗すれば次のいずれかのエラーを返す。
D3DRMERR_CONNECTIONLOST
D3DRMERR_INVALIDOBJECT
D3DRMERR_INVALIDPARAMS
D3DRMERR_PENDING

注意

頂点の数が取得できない場合には、このメソッドはD3DRMERR_PENDINGを返す。

IDirect3DRMProgressiveMesh::GetVertexDetailRange

IDirect3DRMProgressiveMesh

メッシュ中で使用可能な最小および最大の頂点カウントを返す。

構文

HRESULT GetVertexDetailRange(
  LPDWORD lpdwMinVertices,
  LPDWORD lpdwMaxVertices
  )

パラメータ

lpdwMinVertices
頂点の最小数がセットされるDWORD値のアドレス。
lpdwMaxVertices
頂点の最大数がセットされるDWORD値のアドレス。

戻り値

成功すればD3DRM_OK、失敗すれば次のいずれかのエラーを返す。
D3DRMERR_CONNECTIONLOST
D3DRMERR_INVALIDOBJECT
D3DRMERR_INVALIDPARAMS
D3DRMERR_PENDING

注意

頂点カウントが取得できない場合には、このメソッドはD3DRMERR_PENDINGを返す。

IDirect3DRMProgressiveMesh::Load

IDirect3DRMProgressiveMesh

プログレッシブメッシュオブジェクトをメモリ、ファイル、リソース、またはURLからロードする。ロードは同期式でも非同期式でも良い。

構文

HRESULT Load(
  LPVOID lpSource,
  LPVOID lpObjID,
  D3DRMLOADOPTIONS dloLoadflags,
  D3DRMLOADTEXTURECALLBACK lpCallback,
  LPVOID lpArg
  )

パラメータ

lpSource
ロードするオブジェクトのソースのアドレス。このソースは、dloLoadflagsパラメータで指定されているソースフラグによって、ファイル、リソース、メモリブロック、またはストリームのどれかにできる。
lpObjID
プログレッシブメッシュであるDirectXファイルレコードのIDのアドレス。これは、文字列またはUUID (dloLoadflagsによって決まる)にすることができる。lpObjIDがNULLの場合、dloLoadflagsD3DRMLOAD_FIRSTでなければならない。
dloLoadflags
ロードを実行する方法を記述するD3DRMLOADOPTIONS型の値。以下の2つのグループのフラグをそれぞれ1つずつ含めなければならない。
  • DirectXファイル中のどのオブジェクトをロードするかを決定するには、以下のフラグを使う。
    D3DRMLOAD_BYNAME
    lpObjIDパラメータは文字列と解釈する。
    D3DRMLOAD_BYGUID
    lpObjIDパラメータはUUIDと解釈する。
    D3DRMLOAD_FIRST
    最初に発見されたプログレッシブメッシュをロードする。
  • DirectXファイルのソースを決定するには、以下のフラグを使う。
    D3DRMLOAD_FROMFILE
    lpSourceパラメータはローカルファイル名を表す文字列と解釈する。
    D3DRMLOAD_FROMRESOURCE
    lpSourceパラメータはD3DRMLOADRESOURCE構造体へのポインタとして解釈する。
    D3DRMLOAD_FROMMEMORY
    lpSourceパラメータはD3DRMLOADMEMORY構造体へのポインタとして解釈する。
    D3DRMLOAD_FROMURL
    lpSourceパラメータはURLとして解釈する。

さらに、ダウンロードを同期式か非同期式にするかを指定できる。デフォルトでは、ロードは同期式であり、Load呼び出しは、すべてのデータのロードが完了するまで、あるいはエラーが発生するまで戻らない。非同期式ロードを指定するには、以下のフラグを含める。

D3DRMLOAD_ASYNCHRONOUS − Load呼び出しは直ちに戻る。ロードの進行状態をチェックするのに、IDirect3DRMProgressiveMesh::RegisterEventsおよびIDirect3DRMProgressiveMesh::GetLoadStatusによってイベントを使用するのは、アプリケーションの責任となる。

lpCallback
D3DRMLOADTEXTURECALLBACKコールバック関数のアドレス。遭遇した任意のテクスチャをロードするのに使用される。このコールバック関数は、ローダが遭遇したテクスチャ名と、ユーザ定義のlpArgパラメータによって使われる。新しいスレッドは、このコールバック関数に対しては生成されない。アプリケーションが、テクスチャを漸次的にダウンロードしたければ、スレッドを生成し、いつものようにLPDIRECT3DRMTEXTUREを戻り値として戻らなければならない。
lpArg
D3DRMLOADTEXTURECALLBACKコールバック関数に渡されるユーザ定義データのアドレス。

戻り値

成功すればD3DRM_OK、失敗すれば次のいずれかのエラーを返す。
D3DRMERR_BADPMDATA
D3DRMERR_BADFILE
D3DRMERR_CONNECTIONLOST
D3DRMERR_INVALIDOBJECT
D3DRMERR_INVALIDPARAMS

注意

プログレッシブメッシュは、初期化しない限り有効にならない。非同期式ダウンロードが指定されていれば、このAPIは、直ちに戻り、別のスレッドがダウンロードを実行するために生成される。

このメソッド、IDirect3DRMProgressiveMesh::CloneおよびIDirect3DRMProgressiveMesh::Duplicateはすべて、プログレッシブメッシュを初期化する。オブジェクトは一度しか初期化できない。したがって、プログレッシブメッシュをクローンまたは複製してから、そのクローンまたは複製したメッシュにロードすることも、以前にロードしたメッシュにロードすることもできない。

IDirect3DRMProgressiveMesh::RegisterEvents

IDirect3DRMProgressiveMesh

アプリケーションが、プログレッシブメッシュオブジェクトにイベントを登録するのを可能にする。イベントは、適切な条件が満足されたときに通知される。

構文

HRESULT RegisterEvents(
  HANDLE hEvent,
  DWORD dwFlags,
  DWORD dwReserved
  )

パラメータ

hEvent
必要な条件が満足されたときに通知されるイベント。
dwFlags
以下のフラグの1つとなる。
D3DRMPMESHEVENT_BASEMESH
ベースメッシュのダウンロードが完了すると通知されるイベント。
D3DRMPMESHEVENT_COMPLETE
すべてのデータのダウンロードが完了すると通知されるイベント。
dwReserved
0でなければならない。

戻り値

成功すればD3DRM_OK、失敗すれば次のいずれかのエラーを返す。

D3DRMERR_INVALIDOBJECT
D3DRMERR_INVALIDPARAMS

注意

このメソッドは、ロードの進行状態を監視するために使用できる。イベントは、エラーが発生した場合にも通知されるので、アプリケーションは、通知後にIDirect3DRMProgressiveMesh::GetLoadStatusメソッドを使う必要がある。

IDirect3DRMProgressiveMesh::SetDetail

IDirect3DRMProgressiveMesh

要求された詳細レベルを0.0と1.0の間に正規化して設定する。

構文

HRESULT SetDetail(
  D3DVALUE dvVal
  )

パラメータ

dvVal
詳細の要求レベル。

戻り値

成功すればD3DRM_OK、失敗すれば次のいずれかのエラーを返す。
D3DRMERR_BADPMDATA
D3DRMERR_CONNECTIONLOST
D3DRMERR_INVALIDOBJECT
D3DRMERR_INVALIDPARAMS
D3DRMERR_PENDING

注意

十分な詳細項目のダウンロードがまだ完了していなければ (ただし、時間がたてば使用可能)、要求は受け入れられて、D3DRMERR_PENDINGが返る。このエラーは通知であり、要求されたレベルが、十分な詳細が使用可能になると直ちに設定されるということを示すものである。

正規化した値0.0は頂点の最小数を表し (ベースメッシュにある頂点の数)、正規化した値1.0は頂点の最大数を表す。

IDirect3DRMProgressiveMesh::SetFaceDetail

IDirect3DRMProgressiveMesh

要求された面詳細レベルを設定する。

構文

HRESULT SetFaceDetail(
  DWORD dwCount
  )

パラメータ

dwCount
要求される面の数。

戻り値

成功すればD3DRM_OK、失敗すれば次のいずれかのエラーを返す。
D3DRMERR_BADPMDATA
D3DRMERR_CONNECTIONLOST
D3DRMERR_INVALIDOBJECT
D3DRMERR_INVALIDPARAMS
D3DRMERR_PENDING
D3DRMERR_REQUESTTOOLARGE

注意

ときには、常に要求された値から1以内であるにもかかわらず、プログレッシブメッシュを要求された面の数に設定できないことがある。これは、分割頂点が1ないし2面加えることができるからである。たとえば、SetFaceDetail(20)を使うと、プログレッシブメッシュは面の詳細を19または21だけにしか設定できないかもしれない。プログレッシブメッシュにある面の実際の数は、常にIDirect3DRMProgressiveMesh::GetFaceDetailメソッドを使って取得することができる。

十分な詳細項目のダウンロードがまだ完了していなければ(ただし、時間がたてば使用可能)、要求は受け入れられて、D3DRMERR_PENDINGが返る。このエラーは、通知であり、要求されたレベルが、十分な詳細が使用可能になると直ちに設定されるということを示すものである。要求されている詳細レベルが、プログレッシブメッシュで使用可能な詳細レベルより大きければ、D3DRMERR_REQUESTTOOLARGEが返る。

参照

IDirect3DRMProgressiveMesh::GetFaceDetail

IDirect3DRMProgressiveMesh::SetMinRenderDetail

IDirect3DRMProgressiveMesh

0.0(最小詳細レベル)から1.0(最大詳細レベル)の範囲で、ロード中にレンダリングする詳細の最小レベルを設定する。通常、プログレッシブメッシュは、ベースメッシュが使用可能になった(およびメッシュがシーングラフ中に存在するようになった)後でレンダリングされる。

構文

HRESULT SetMinRenderDetail(
  D3DVALUE dvCount
  )

パラメータ

dvCount
要求されている最小詳細。

戻り値

成功すればD3DRM_OK、失敗すれば次のいずれかのエラーを返す。
D3DRMERR_CONNECTIONLOST
D3DRMERR_INVALIDOBJECT
D3DRMERR_INVALIDPARAMS
D3DRMERR_PENDING
D3DRMERR_REQUESTTOOLARGE
D3DRMERR_REQUESTTOOSMALL

注意

このAPIは、ロード中にレンダリングされる面または頂点の(ベースメッシュより大きい)最小数を設定する。

以降のIDirect3DRMProgressiveMesh::SetDetailIDirect3DRMProgressiveMesh::SetFaceDetail、またはIDirect3DRMProgressiveMesh::SetVertexDetail呼び出しはいつでも、このメソッドより優先される。

IDirect3DRMProgressiveMesh::SetQuality

IDirect3DRMProgressiveMesh

Direct3DRMProgressiveMeshオブジェクトのレンダリングクオリティを設定する。

構文

HRESULT SetQuality(
  D3DRMRENDERQUALITY quality
  );

パラメータ

quality
使用する新しいレンダリングクオリティを指定するD3DRMRENDERQUALITY列挙型のメンバ。

戻り値

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

注意

オブジェクトクオリティには、3つのコンポーネントがある。すなわち、シェーディングモード (フラットまたはグーロー。フォンは実装されておらず、デフォルトでグーローシェーディングになる)、照明タイプ (オンまたはオフ) および塗りつぶしモード (ポイント、ワイヤフレームまたはソリッド) である。

デバイスのクオリティを設定するには、IDirect3DRMDevice3::SetQualityを用いる。デフォルトで、デバイスクオリティはD3DRMRENDER_FLAT (フラットシェーディング、照明オン、およびソリッド塗りつぶし) である。

YDirect3DRMProgressiveMeshオブジェクトのクオリティを設定するには、SetQualityメソッドを用いる。デフォルトで、Direct3DRMProgressiveMeshオブジェクトのクオリティはD3DRMRENDER_GOURAUD (グーローシェーディング、照明オン、およびソリッド塗りつぶし) である。

ヒント: グーローシェーディングは、詳細レベルを頻繁にまたは素早く変更するプログレッシブメッシュオブジェクトについて、よりよいパフォーマンスを得られる。

Direct3D保持モードは、デバイスやオブジェクトの個々のコンポーネントに対する現在の設定の中で最も低位のクオリティで、オブジェクトにレンダリングを行う。たとえば、オブジェクトの現在のクオリティ設定がD3DRMRENDER_GOURAUDで、デバイスがD3DRMRENDER_FLATであると、オブジェクトはフラットシェーディング、ソリッド塗りつぶし、および照明オンでレンダリングされる。

オブジェクトの現在のクオリティ設定がD3DRMSHADE_GOURAUD|D3DRMLIGHT_OFF|D3DRMFILL_WIREFRAMEで、デバイスのクオリティ設定がD3DRMSHADE_FLAT|D3DRMLIGHT_ON|D3DRMFILL_POINTであると、オブジェクトはフラットシェーディング、照明オフ、およびポイント塗りつぶしモードでレンダリングされる。

これらのルールは、Direct3DRMMeshBuilder3オブジェクトおよびDirect3DRMProgressiveMeshオブジェクトに適用される。しかし、Direct3DRMMeshオブジェクトはこれらのルールに従わない。メッシュオブジェクトはデバイスのクオリティ設定を無視し、グループクオリティ設定を用いる(デフォルトでD3DRMRENDER_GOURAUD)。

参照

IDirect3DRMProgressiveMesh::GetQuality

IDirect3DRMProgressiveMesh::SetVertexDetail

IDirect3DRMProgressiveMesh

要求された頂点詳細レベルを設定する。

構文

HRESULT SetVertexDetail(
  DWORD dwCount
  )

パラメータ

dwCount
要求されている頂点の数。

戻り値

成功すればD3DRM_OK、失敗すれば次のいずれかのエラーを返す。
D3DRMERR_BADPMDATA
D3DRMERR_CONNECTIONLOST
D3DRMERR_INVALIDOBJECT
D3DRMERR_INVALIDPARAMS
D3DRMERR_PENDING
D3DRMERR_REQUESTTOOLARGE

注意

十分な詳細項目のダウンロードが、まだ完了していなければ(ただし、時間が経てば使用可能)、要求は受け入れられて、D3DRMERR_PENDINGが返る。このエラーは通知であり、要求されたレベルが、十分な詳細が使用可能になると直ちに設定されるということを示すものである。要求されている詳細レベルが、プログレッシブメッシュで使用可能な詳細レベルより大きければ、D3DRMERR_REQUESTTOOLARGEが返る。

参照

IDirect3DRMProgressiveMesh::GetVertexDetail


トップに戻る トップに戻る
© 1999 Microsoft and/or its suppliers. All rights reserved. Terms of Use.