出力デバイス

レンダリングされたすべての出力形式は、出力デバイスと関連していなくてはならない。デバイスオブジェクトは、レンダリングの出力先の可視ディスプレイを表している。

デバイスオブジェクトは、レンダリングの出力先の可視ディスプレイを表している。 レンダリングの動作は、指定された出力デバイスのタイプに依存する。デバイスに複数のビューポートを定義し、同時に表示されるシーンに異なる視点を与えることもできる。また、デバイスはいくつでも指定でき、同じシーンに複数の出力先を用意することも可能である。

保持モードは、スクリーンやウィンドウ、またはアプリケーションメモリに直接レンダリングするデバイスをサポートする。

アプリケーションは、IDirect3DRMDevice3IDirect3DRMDevice2IDirect3DRMDeviceインターフェイスを使用して、出力デバイスと対話する。詳細については「IDirect3DRMDevice3」を参照すること。

このセクションでは、Direct3Dイメージを出力デバイスに表示する際に有効なオプションについて説明する。

クオリティ

シーンやその構成要素は、出力デバイスによって、リアルの程度をさまざまに変えてレンダリングすることができる。レンダリングクオリティとは、デバイスのレンダリングサーフェス上で実行されるレンダリングのクオリティの最大値である。メッシュ、プログレッシブメッシュおよびメッシュビルダオブジェクトでも、レンダリングクオリティを指定することができる。

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

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

Direct3DRMProgressiveMesh、Direct3DRMMeshBuilder3またはDirect3DRMMeshBuilder3オブジェクトのクオリティは、それぞれのSetQualityメソッド、つまりIDirect3DRMProgressiveMesh::SetQualityIDirect3DRMMeshBuilder3::SetQuality、およびIDirect3DRMMeshBuilder3::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)。

カラーモデル

保持モードは、RGBモデルとモノクロ(ランプ)モデルの2つのカラーモデルをサポートする。カラーモデルを取得するためには、アプリケーションからIDirect3DRMDevice3::GetColorModelメソッドを使用する。

RGBモデルは、色を赤、緑、青の光の組み合わせとして扱い、色の付いた複数の照明をサポートする。シーンで使われる色数には制限がない。このモデルは、8、16、24、32ビットのディスプレイで利用することができる。ディスプレイの表示可能色数が24ビットよりも少ないと、色解像度の制限によって階段状に階調が変化するのが目立つバンディング(マッハバンドとも呼ぶ)が発生する場合がある。これは、オプションのディザ処理を用いることで回避することができる。

モノクロモデルでも複数の照明はサポートされるが、その色要素は無視される。それぞれの照明は、グレーの光度で設定される。頂点のRGBカラーは輝度として解釈される。異なる明るさで頂点の間の輝度が(グーローシェーディングモードでは)補間される。モノクロモデルでは、シーン上のオブジェクトの色数が制限される。システムパレットの空きエントリをすべて使い尽くすと、システム内部のパレットマネージャは、指定された色に最も近い色をパレット内から探す。モノクロモデルは、RGBモデルと同様に、8、16、24、32ビットのディスプレイで使用することができる(ただし、モノクロモデルは8ビットのテクスチャしかサポートしない)。RGBモデルの代わりにモノクロモデルを使用する利点は、パフォーマンスがかなり向上することである。

Direct3Dデバイスのカラーモデルは、変更することができない。アプリケーションは、必要なカラーモデルをサポートしたドライバを識別するために、IDirect3D::EnumDevicesメソッドかIDirect3D::FindDeviceメソッドを使用し、デバイス作成メソッドの中でそのドライバを指定しなくてはならない。

パレットはテクスチャ、オフスクリーンサーフェスおよびオーバーレイサーフェスでサポートされており、プライマリサーフェスと同一のパレットである必要はない。デバイスが4ビットインデックス付きパレット (16色) をサポートし、8ビットインデックス付き作品 (256色) がある場合、保持モードはパレットから最初の16エントリを取り出して再マッピングを行い、4ビットとして作品のレンダリングを行う。したがって、可能であれば望ましい16色をパレットの初めの部分に配置するとよい。

ウィンドウ管理

正しい操作を行うために、オペレーティングシステムからWM_MOVEやWM_PAINT、WM_ACTIVATEメッセージを受け取ったとき、アプリケーションは、IDirect3DRMWinDevice::HandlePaintおよびIDirect3DRMWinDevice::HandleActivateメソッドを使用してDirect3Dに通知しなくてはならない。

関連情報については、「IDirect3DRMWinDevice」を参照すること。


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