TOP今月刊既刊I/OサポートQ&AWeb I/O通販お問い合わせ
 Q&A > DirectX9 DirectX Graphics 書名検索: 詳細検索...
Q&A一覧
Q

ポイントスプライトで大きさが変化しない

p.251から説明されているポイント・スプライトですが、距離によって大きさが変化しません。

 
たとえば、カメラの位置を変更しても同じ大きさに見えます。
 
以下はテクニックの設定です。


PointSpriteEnable = TRUE;     // ポイント・スプライト有効(一枚のテクスチャ全体を表示)

 PointScaleEnable = TRUE;      // カメラ空間のサイズ

 PointSize = 16.0f;            // ポイント・スプライトの大きさ

 PointScale_A = 0.0f;

 PointScale_B = 0.0f;

 PointScale_C = 1.0f;

 
各頂点ごとの大きさ指定、テクニックではなくSetRenderStateによる設定、など
いろいろな組み合わせを試しましたが、大きさは距離によって変化しませんでした。
 
ネットに公開されている、シェーダーを使っていないサンプルでは上手く動きましたが、
何が違うのか、全コードを解析しても理解できません。
 
GeForce FX 5500 を使っています。
ちなみに、他のもっと良い環境でもダメでした。

2007年03月03日受付
A

実行環境でポイント・スプライトのサイズ指定が有効かどうかは、
D3DCAPS9構造体のFVFCapsメンバにD3DFVFCAPS_PSIZEフラグが
設定されているかどうかで判定できます。
 
 
       設定可能な最大値は、D3DCAPS9構造体のMaxPointSizeメンバで調べられます。
       また、レンダーステート(D3DRS_POINTSIZE)と頂点要素の両方でポイント・サイズを
       指定した場合、頂点要素が優先されます。

最終更新日:2007年07月26日 15時49分17秒
▲このページの上へ
Q

サンプルプログラム起動時にメッセージが表示される

本書に添付されていますDirectXのサンプルプログラムについてですが、動作させる際にメッセージが出力されます。
このメッセージの原因と対処方法がわかればご教授願いますでしょうか。

Switching to the reference rasterizer,
a software device that implements the entire
Direct3D feature set, but runs very slowly.

2006年10月06日受付
A

ご指摘のメッセージは、実行環境におけるDirectX GraphicsのHALデバイスがアプリケーションで必要とされている機能をサポートしていないので、代わりにリファレンス・ラスタライザが使われることを通知するものです。

リファレンス・ラスタライザは、DirectX Graphicsのすべての機能がリファレンス用にソフトウェア実装されているデバイスです。そのため、DirectX Graphicsのすべての機能が使えますが、実行速度が非常に遅い、基本的に開発・デバッグ用のデバイスです。

おそらく、ご使用になられているパソコンのグラフィックス機能で「シェーダ2.0」(頂点シェーダ、ピクセル・シェーダ)の機能がサポートされていないのではないでしょうか。その場合、本書ではDirectX9のシェーダ2.0が使える環境を前提としておりますので、リファレンス・ラスタライザを使わないようにするには、シェーダ2.0をサポートしたビデオカードなどを用意する必要があります。

最終更新日:2006年10月06日 20時10分33秒
▲このページの上へ