TOP | 今月刊 | 既刊 | I/O | サポート | Q&A | Web I/O | 通販 | お問い合わせ |
|
p.251から説明されているポイント・スプライトですが、距離によって大きさが変化しません。
たとえば、カメラの位置を変更しても同じ大きさに見えます。
以下はテクニックの設定です。
PointSpriteEnable = TRUE; // ポイント・スプライト有効(一枚のテクスチャ全体を表示) PointScaleEnable = TRUE; // カメラ空間のサイズ PointSize = 16.0f; // ポイント・スプライトの大きさ PointScale_A = 0.0f; PointScale_B = 0.0f; PointScale_C = 1.0f; |
実行環境でポイント・スプライトのサイズ指定が有効かどうかは、
D3DCAPS9構造体のFVFCapsメンバにD3DFVFCAPS_PSIZEフラグが
設定されているかどうかで判定できます。
設定可能な最大値は、D3DCAPS9構造体のMaxPointSizeメンバで調べられます。
また、レンダーステート(D3DRS_POINTSIZE)と頂点要素の両方でポイント・サイズを
指定した場合、頂点要素が優先されます。
本書に添付されていますDirectXのサンプルプログラムについてですが、動作させる際にメッセージが出力されます。
このメッセージの原因と対処方法がわかればご教授願いますでしょうか。
Switching to the reference rasterizer,
a software device that implements the entire
Direct3D feature set, but runs very slowly.
ご指摘のメッセージは、実行環境におけるDirectX GraphicsのHALデバイスがアプリケーションで必要とされている機能をサポートしていないので、代わりにリファレンス・ラスタライザが使われることを通知するものです。
リファレンス・ラスタライザは、DirectX Graphicsのすべての機能がリファレンス用にソフトウェア実装されているデバイスです。そのため、DirectX Graphicsのすべての機能が使えますが、実行速度が非常に遅い、基本的に開発・デバッグ用のデバイスです。
おそらく、ご使用になられているパソコンのグラフィックス機能で「シェーダ2.0」(頂点シェーダ、ピクセル・シェーダ)の機能がサポートされていないのではないでしょうか。その場合、本書ではDirectX9のシェーダ2.0が使える環境を前提としておりますので、リファレンス・ラスタライザを使わないようにするには、シェーダ2.0をサポートしたビデオカードなどを用意する必要があります。