6. 頂点データの処理

6. 頂点データの処理

Device クラスは、ソフトウェアとハードウェアの両方で頂点処理をサポートしている。一般に、ソフトウェアとハードウェアの頂点処理に対するデバイス能力は同じではない。ハードウェアの能力はディスプレイ アダプタとドライバによって変化するが、ソフトウェアの能力は一定している。

次に示す CreateFlags 列挙の定数は、ハードウェア デバイスとリファレンス デバイスの頂点処理動作を制御する。

また、BehaviorFlags 構造体も、これらと同じ定数値にアクセスするプロパティを使って動作の制御に利用できる。

Device コンストラクタを呼び出すときは、上のいずれかのフラグを指定する。MixedVertexProcessing 混合モード フラグを指定すると、デバイスはソフトウェア、ハードウェア両方の頂点処理を実行できる。デバイスには常に 3 つの頂点処理フラグのいずれか 1 つを設定する。フラグは相互に排他的である。ピュア デバイス (PureDevice) を作成するときは、HardwareVertexProcessing フラグを設定する必要がある点に注意すること。

1 つのデバイスで頂点処理能力が重複することを避けるため、実行時にはハードウェア頂点処理能力のみ問い合わされる。ソフトウェア頂点処理能力は固定されており、実行時に問い合わせることはできない。

デバイスのハードウェア頂点処理能力を確認するには、VertexProcessingCaps 構造体のプロパティを調べることができる。ソフトウェア頂点処理では、VertexProcessingCaps の次の能力がサポートされている (利用可能な能力のうち、2 つを除いたすべての能力)。

さらに、次の表は、ソフトウェア頂点処理モードのデバイス能力 (Caps) に設定される値の一覧を示している。

メンバ ソフトウェアの頂点処理能力
MaxActiveLights 無制限
MaxUserClipPlanes 6
MaxVertexBlendMatrices 4
MaxStreams 16
MaxVertexIndex int(0xffffffff)

ソフトウェア頂点処理では、無制限のライト数、プログラマブル頂点シェードのフル サポートなど、一連の頂点処理能力が保証されている。ハードウェア デバイスの使用中、ソフトウェアとハードウェアの頂点処理はいつでも切り替えることができる。ハードウェアとソフトウェアの頂点処理を両方ともサポートするのは、ハードウェア デバイスだけである。唯一の要件は、ソフトウェア頂点処理に使われる頂点バッファをシステム メモリに割り当てることである。通常は Pool 列挙の SystemMemory 定数を使う。

ハードウェア頂点処理のパフォーマンスは、ソフトウェア頂点処理のパフォーマンスに匹敵する。そのため、1 つのデバイス タイプ内で、ハードウェアとソフトウェアによる頂点処理のエミュレーション機能を提供することをお勧めする。これはラスタ化の場合は当てはまらない。ラスタ化の場合、ホスト プロセッサは専用グラフィック ハードウェアに比べてはるかに低速である。したがって、1 つのデバイス タイプ内で、ハードウェアとソフトウェアによるエミュレートされたラスタ化は提供されない。ソフトウェア頂点処理は、1 つのデバイス内で実行時とハードウェア (ドライバ) 間で複製される唯一の機能である。他のすべてのデバイス能力は、ドライバにより提供される、変化する可能性がある機能である。

© 2002 Microsoft Corporation. All rights reserved. Terms of use.