メッシュは、ポリゴン面のセットから構成されるビジュアルオブジェクトである。メッシュは、頂点のセットと面のセットを定義する。メッシュの詳細については、「IDirect3DRMMesh」を参照すること。
プログレッシブメッシュは、ベースメッシュ (粗いバージョン) およびメッシュをさらに精製するために使用される頂点分割レコードのセットとして格納されるメッシュである。すなわち、プログレッシブな精製が可能である。これによって、メッシュ用のレンダリングの詳細レベルをセットし、リモートソースからのプログレッシブダウンロードも可能になる。
プログレッシブメッシュは、Microsoft® Direct3D®保持モードのビジュアルであり、ビジュアル処理の標準的な方法で使用することができる。すなわち、プログレッシブメッシュは、フレーム階層に追加すること、複数回のインスタンス化、およびピックも可能である。
IDirect3DRMProgressiveMeshインターフェイスのメソッドを使用して、レンダリングする頂点または面の数をセットし、レンダリング詳細を制御することができる。レンダリングに必要な最小詳細レベルを指定することもできる。通常、プログレッシブメッシュは、ベースメッシュが一度使用可能になるとレンダリングされるが、IDirect3DRMProgressiveMesh::SetMinRenderDetailメソッドによってレンダリングの前にそれ以上の詳細レベルが必要であると指定することができる。また、IDirect3DRMProgressiveMesh::CreateMeshメソッドを使用して、プログレッシブメッシュ固有の状態からDirect3DRMMeshオブジェクトを構築することもできる。
プログレッシブメッシュを、ファイル、リソース、メモリ、またはURLからロードすることができる。ローディングは同期式でも非同期式でも行える。ダウンロードの状態はIDirect3DRMProgressiveMesh::GetLoadStatusメソッドによってチェックし、IDirect3DRMProgressiveMesh::Abortメソッドでダウンロードを終了することができる。ローディングが非同期式の場合、ロードの進行状態を調べるためにIDirect3DRMProgressiveMesh::RegisterEventsとIDirect3DRMProgressiveMesh::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 |
現在アクティブなダウンロードを中止する。
構文
HRESULT Abort(
DWORD dwFlags
)
パラメータ
- dwFlags
- 0でなければならない。
戻り値
成功すればD3DRM_OK、失敗すれば次のいずれかのエラーを返す。
D3DRMERR_INVALIDOBJECT D3DRMERR_INVALIDPARAMS
注意
このメソッドが使われる前にベースメッシュがダウンロードされている場合、その効果は、プログレッシブメッシュがロードされ、分割頂点が有効な状態にあり、プログレッシブメッシュがレンダリング可能である場合と同じである。他のプログレッシブメッシュメソッドも使うことができる。IDirect3DRMProgressiveMesh::Abortを呼び出す前にベースメッシュがダウンロードされておらず、シーンにプログレッシブメッシュを追加した場合、IDirect3DRMViewport2::Renderは成功するが、プログレッシブメッシュへのレンダリングは行われない。また、プログレッシブメッシュを使用するとき (たとえば、メッシュやクローンを作成するため) にベースメッシュがダウンロードされていなければ、呼び出しはD3DRMERR_NOTENOUGHDATAを返す。
現在ロードされているDirect3DRMProgressiveMeshオブジェクトのコピーを作成する。
構文
HRESULT Clone(
LPDIRECT3DRMPROGRESSIVEMESH *lplpD3DRMPMesh
)
パラメータ
- lplpD3DRMPMesh
- 新しく生成されるDirect3DRMProgressiveMeshオブジェクトへのポインタでセットされるDirect3DRMProgressiveMeshポインタのアドレス。
戻り値
成功すればD3DRM_OK、失敗すれば次のいずれかのエラーを返す。
D3DRMERR_CONNECTIONLOST D3DRMERR_INVALIDOBJECT D3DRMERR_INVALIDPARAMS D3DRMERR_NOTENOUGHDATA
注意
クローン中のプログレッシブメッシュには、少なくともそのベースメッシュをロードしておかなければならない。現在、非同期でロード中のプログレッシブメッシュ上でこのメソッドを使うと、クローンされたメッシュはロードしているプログレッシブメッシュがクローンされたときに持っていた詳細レベルしか持たない。複製後にロードされた分割頂点は、クローンされたメッシュでは利用できない。
このメソッドはプログレッシブメッシュの内部データを共有しようとはしないが、IDirect3DRMProgressiveMesh::Duplicateは共有しようとする。
参照
現在の詳細レベルでメッシュを作成する。
構文
HRESULT CreateMesh(
LPDIRECT3DRMMESH *lplpD3DRMMesh
)
パラメータ
- lplpD3DRMMesh
- 新しく生成されるDirect3DRMMeshオブジェクトへのポインタでセットされるDirect3DRMMeshポインタへのポインタ。
戻り値
成功すればD3DRM_OK、失敗すれば次のいずれかのエラーを返す。
D3DRMERR_CONNECTIONLOST D3DRMERR_INVALIDOBJECT D3DRMERR_INVALIDPARAMS D3DRMERR_NOTENOUGHDATA
注意
アプリケーションが、まだ使用可能になっていない詳細レベルを要求するか、またはベースメッシュが、まだ使用可能になっていないかのいずれかの場合には、このメソッドはエラーD3DRMERR_NOTENOUGHDATAを返す。
Direct3DRMProgressiveMeshオブジェクトのコピーを作成する。このコピーは、オリジナルと幾何図形や面データをすべて共有する。しかし、オリジナルとは別に詳細レベルを設定することができる。これは、同一のメッシュデータを階層の異なる部分で、ただし、異なる詳細レベルで使用できるようにする。本質的に、フレーム階層内にプログレッシブメッシュの2つのインスタンスがあると言える。
構文
HRESULT Duplicate(
LPDIRECT3DRMPROGRESSIVEMESH *lplpD3DRMPMesh
)
パラメータ
- lplpD3DRMPMesh
- 新しく生成されるDirect3DRMProgressiveMeshオブジェクトへのポインタでセットされるDirect3DRMProgressiveMeshポインタのアドレス。
戻り値
失敗すれば次のいずれかのエラーを返す。
D3DRMERR_CONNECTIONLOST D3DRMERR_INVALIDOBJECT D3DRMERR_INVALIDPARAMS D3DRMERR_NOTENOUGHDATA
注意
複製中のプログレッシブメッシュには、少なくともそのベースメッシュをロードしておかなければならない。現在、非同期でロード中のプログレッシブメッシュ上でこのメソッドを使うと、複製されたメッシュはロードしているプログレッシブメッシュが複製されたときに持っていた詳細レベルしか持たない。複製後にロードされた分割頂点は、複製されたメッシュでは利用できない。
プログレッシブメッシュは、ベースメッシュを表すデータセットと、分割頂点を表すデータセットを持っている。ベースメッシュデータおよびプログレッシブメッシュの現状や現在の詳細レベルを記述するデータは、複製されたメッシュ間で共有されない。しかし、分割頂点データは共有される。このメソッドはプログレッシブメッシュの新しいインスタンスを作成する。このインスタンスは、オリジナルと幾何図形や面データをすべて共有するが、その詳細レベルはオリジナルとは無関係に設定することができる。
Direct3DRMProgressiveMeshオブジェクトを含む境界ボックスを取得する。境界ボックスは、各次元で、子フレームを基準とする最小および最大の座標を与える。
構文
HRESULT GetBox(
D3DRMBOX *lpD3DRMBox
);
パラメータ
- lpD3DRMBox
- 境界ボックスの座標がセットされるD3DRMBOX構造体のアドレス。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。
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は頂点の最大数を表す。
プログレッシブメッシュにある面の数を取得する。
構文
HRESULT GetFaceDetail(
LPDWORD lpdwCount
)
パラメータ
- lpdwCount
- プログレッシブメッシュの面の数がセットされるDWORDのアドレス。
戻り値
成功すればD3DRM_OK、失敗すれば次のいずれかのエラーを返す。
D3DRMERR_CONNECTIONLOST D3DRMERR_PENDING D3DRMERR_INVALIDOBJECT D3DRMERR_INVALIDPARAMS
注意
面の数が利用できなければ、このメソッドはD3DRMERR_PENDINGを返す。
プログレッシブメッシュで使用可能な最小および最大の面カウントを返す。
構文
HRESULT GetFaceDetailRange(
LPDWORD lpdwMinFaces,
LPDWORD lpdwMaxFaces
)
パラメータ
- lpdwMinFaces
- 面の最小数がセットされるDWORD値のアドレス。
- lpdwMaxFaces
- 面の最大数がセットされるDWORD値のアドレス。
戻り値
成功すればD3DRM_OK、失敗すれば次のいずれかのエラーを返す。
D3DRMERR_CONNECTIONLOST D3DRMERR_INVALIDOBJECT D3DRMERR_INVALIDPARAMS D3DRMERR_PENDING
注意
面カウントが取得できない場合には、D3DRMERR_PENDINGを返す。
ロードの現在の状態をアプリケーションが照会することを可能にする。
構文
HRESULT GetLoadStatus(
LPD3DRMPMESHLOADSTATUS lpStatus
)
パラメータ
- lpStatus
- プログレッシブメッシュのロード状態を含むD3DRMPMESHLOADSTATUS構造体のアドレス。
戻り値
成功すればD3DRM_OK、失敗すれば次のいずれかのエラーを返す。
D3DRMERR_CONNECTIONLOST D3DRMERR_INVALIDOBJECT D3DRMERR_INVALIDPARAMS
注意
メッシュのレンダリングが可能な(ベースメッシュのダウンロードが完了し、データが壊れていない)場合には、dwFlagsメンバには、D3DRMPMESHSTATUS_RENDERABLEを格納する。ダウンロードが割り込みを受けた場合には、dwFlagsメンバには、D3DRMPMESHSTATUS_INTERRUPTEDを格納する。
プログレッシブメッシュのレンダリングクオリティを指定するD3DRMRENDERQUALITY列挙型のメンバを取得する。
構文
HRESULT GetQuality(
LPD3DRMRENDERQUALITY lpQuality
);
パラメータ
- lpQuality
- 成功すれば、レンダリングクオリティを指定するD3DRMRENDERQUALITYメンバへのポインタ。
戻り値
成功すればD3DRM_OK、失敗すれば次のいずれかのエラーを返す。
- D3DRMERR_BADOBJECT
- プログレッシブメッシュは無効。
- D3DRMERR_BADVALUE
- D3DRMRENDERQUALITYメンバへのポインタは無効。
参照
プログレッシブメッシュにある頂点の数を返す。
構文
HRESULT GetVertexDetail(
LPDWORD lpdwCount
)
パラメータ
- lpdwCount
- プログレッシブメッシュにある頂点の数がセットされるDWORDのアドレス。
戻り値
成功すればD3DRM_OK、失敗すれば次のいずれかのエラーを返す。
D3DRMERR_CONNECTIONLOST D3DRMERR_INVALIDOBJECT D3DRMERR_INVALIDPARAMS D3DRMERR_PENDING
注意
頂点の数が取得できない場合には、このメソッドはD3DRMERR_PENDINGを返す。
メッシュ中で使用可能な最小および最大の頂点カウントを返す。
構文
HRESULT GetVertexDetailRange(
LPDWORD lpdwMinVertices,
LPDWORD lpdwMaxVertices
)
パラメータ
- lpdwMinVertices
- 頂点の最小数がセットされるDWORD値のアドレス。
- lpdwMaxVertices
- 頂点の最大数がセットされるDWORD値のアドレス。
戻り値
成功すればD3DRM_OK、失敗すれば次のいずれかのエラーを返す。
D3DRMERR_CONNECTIONLOST D3DRMERR_INVALIDOBJECT D3DRMERR_INVALIDPARAMS D3DRMERR_PENDING
注意
頂点カウントが取得できない場合には、このメソッドはD3DRMERR_PENDINGを返す。
プログレッシブメッシュオブジェクトをメモリ、ファイル、リソース、またはURLからロードする。ロードは同期式でも非同期式でも良い。
構文
HRESULT Load(
LPVOID lpSource,
LPVOID lpObjID,
D3DRMLOADOPTIONS dloLoadflags,
D3DRMLOADTEXTURECALLBACK lpCallback,
LPVOID lpArg
)
パラメータ
- lpSource
- ロードするオブジェクトのソースのアドレス。このソースは、dloLoadflagsパラメータで指定されているソースフラグによって、ファイル、リソース、メモリブロック、またはストリームのどれかにできる。
- lpObjID
- プログレッシブメッシュであるDirectXファイルレコードのIDのアドレス。これは、文字列またはUUID (dloLoadflagsによって決まる)にすることができる。lpObjIDがNULLの場合、dloLoadflagsはD3DRMLOAD_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はすべて、プログレッシブメッシュを初期化する。オブジェクトは一度しか初期化できない。したがって、プログレッシブメッシュをクローンまたは複製してから、そのクローンまたは複製したメッシュにロードすることも、以前にロードしたメッシュにロードすることもできない。
アプリケーションが、プログレッシブメッシュオブジェクトにイベントを登録するのを可能にする。イベントは、適切な条件が満足されたときに通知される。
構文
HRESULT RegisterEvents(
HANDLE hEvent,
DWORD dwFlags,
DWORD dwReserved
)
パラメータ
- hEvent
- 必要な条件が満足されたときに通知されるイベント。
- dwFlags
- 以下のフラグの1つとなる。
- D3DRMPMESHEVENT_BASEMESH
- ベースメッシュのダウンロードが完了すると通知されるイベント。
- D3DRMPMESHEVENT_COMPLETE
- すべてのデータのダウンロードが完了すると通知されるイベント。
- dwReserved
- 0でなければならない。
戻り値
成功すればD3DRM_OK、失敗すれば次のいずれかのエラーを返す。
注意
このメソッドは、ロードの進行状態を監視するために使用できる。イベントは、エラーが発生した場合にも通知されるので、アプリケーションは、通知後にIDirect3DRMProgressiveMesh::GetLoadStatusメソッドを使う必要がある。
要求された詳細レベルを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は頂点の最大数を表す。
要求された面詳細レベルを設定する。
構文
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が返る。
参照
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::SetDetail、IDirect3DRMProgressiveMesh::SetFaceDetail、またはIDirect3DRMProgressiveMesh::SetVertexDetail呼び出しはいつでも、このメソッドより優先される。
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)。
参照
要求された頂点詳細レベルを設定する。
構文
HRESULT SetVertexDetail(
DWORD dwCount
)
パラメータ
- dwCount
- 要求されている頂点の数。
戻り値
成功すればD3DRM_OK、失敗すれば次のいずれかのエラーを返す。
D3DRMERR_BADPMDATA D3DRMERR_CONNECTIONLOST D3DRMERR_INVALIDOBJECT D3DRMERR_INVALIDPARAMS D3DRMERR_PENDING D3DRMERR_REQUESTTOOLARGE
注意
十分な詳細項目のダウンロードが、まだ完了していなければ(ただし、時間が経てば使用可能)、要求は受け入れられて、D3DRMERR_PENDINGが返る。このエラーは通知であり、要求されたレベルが、十分な詳細が使用可能になると直ちに設定されるということを示すものである。要求されている詳細レベルが、プログレッシブメッシュで使用可能な詳細レベルより大きければ、D3DRMERR_REQUESTTOOLARGEが返る。
参照
トップに戻る
© 1999 Microsoft and/or its suppliers. All rights reserved. Terms of Use.