Microsoft DirectX 8.0 (Visual Basic) |
ポイント サイズは D3DRS_POINTSCALEENABLE によって決定される。この値が FALSE に設定されている場合は、アプリケーションで指定されたサイズがスクリーン空間 (トランスフォーム後) サイズとして使用される。スクリーン空間で Microsoft® Direct3D® に渡される頂点は、ポイント サイズが計算されず、指定されたポイント サイズがスクリーン空間のサイズとして解釈される。
D3DRS_POINTSCALEENABLE が TRUE の場合は、Direct3D が、次の式に従ってスクリーン空間のポイント サイズを計算する。アプリケーションで指定されたポイント サイズは、カメラ空間単位で表現される。
Ss = Vh * Si * sqrt(1/(A + B*De + C*(De2)))
この式の中の入力ポイント サイズ Si は、頂点ごとの値か、または D3DRS_POINTSIZE レンダリング ステートの値である。ポイント スケール係数 D3DRS_POINTSCALE_A、D3DRS_POINTSCALE_B、および D3DRS_POINTSCALE_C は、ポイント A、B、および C によって表される。ビューポート Vh は、ビューポートを表す D3DVIEWPORT8 型の Height メンバである。視点から位置座標への距離 (原点の目) De は、ポイント (Xe, Ye, Ze) の視点空間位置を取り、次の処理を実行することによって計算される。
De = sqrt (Xe2 + Ye2 + Ze2)
最大ポイント サイズ Pmax は、D3DCAPS8 の MaxPointSize メンバまたは D3DRS_POINTSIZE_MAX レンダリング ステートのどちらか小さい方を取って決定される。最小ポイント サイズ Pmin は、D3DRS_POINTSIZE_MIN の値を調べることによって決定される。つまり、最終的なスクリーン空間ポイント サイズ S は次の規則に従って決定される。