D3DRS_ALPHABLENDENABLE |
||
D3DRS_SRCBLEND |
||
D3DRS_DESTBLEND |
||
D3DRS_BLENDOP |
||
D3DRS_TEXTUREFACTOR |
テクスチャ ブレンディング引数等で使用される色定数 |
|
D3DRS_BLENDFACTOR |
アルファ合成に関する、定数の合成係数の指定 |
|
D3DRS_SEPARATEALPHABLENDENABLE |
アルファ成分に特別な合成をするためのスイッチ |
|
D3DRS_SRCBLENDALPHA |
アルファ成分用のD3DRS_SRCBLEND |
|
D3DRS_DESTBLENDALPHA |
アルファ成分用のD3DRS_SRCBLEND |
|
D3DRS_BLENDOPALPHA |
アルファ成分用のD3DRS_BLENDOP |
|
D3DRS_ZFUNC |
||
D3DRS_ZWRITEENABLE |
||
D3DRS_DEPTHBIAS |
同一深度での描画順序の設定 |
|
D3DRS_SLOPESCALEDEPTHBIAS |
ポリゴンの勾配に応じた描画順序の設定 |
|
プリミティブ |
||
D3DRS_FILLMODE |
||
D3DRS_SHADEMODE |
||
D3DRS_LASTPIXEL |
||
D3DRS_DITHERENABLE |
||
D3DRS_ANTIALIASEDLINEENABLE |
直線の描画に対するアンチエイリアスの切り替え |
|
テスト等 |
|
|
D3DRS_CULLMODE |
||
D3DRS_CLIPPING |
プリミティブの視錐台クリッピングの切り替え |
|
D3DRS_CLIPPLANEENABLE |
ユーザー定義クリップ面を有効 |
|
D3DRS_SCISSORTESTENABLE |
シザリングテストの切り替え |
|
D3DRS_WRAP0〜D3DRS_WRAP15 |
複数のテクスチャ座標セットに対するテクスチャラッピング動作 |
|
D3DRS_ALPHATESTENABLE |
||
D3DRS_ALPHAREF |
||
D3DRS_ALPHAFUNC |
||
D3DRS_SRGBWRITEENABLE |
sRGBのガンマ補正の切り替え |
|
D3DRS_COLORWRITEENABLE |
色成分ごとの書き込みの切り替え |
|
D3DRS_COLORWRITEENABLE1 〜D3DRS_COLORWRITEENABLE3 |
マルチレンダリングターゲットに関する色成分ごとの書き込みの切り替え |
|
D3DRS_MULTISAMPLEANTIALIAS |
フルシーン アンチエイリアシングの切り替え |
|
D3DRS_MULTISAMPLEMASK |
マルチサンプルに対する書き込み許可情報 |
|
フォグ |
|
|
D3DRS_FOGENABLE |
||
D3DRS_FOGCOLOR |
||
D3DRS_FOGTABLEMODE |
フォグのかかり方の設定 |
|
D3DRS_FOGSTART |
フォグの開始深度 |
|
D3DRS_FOGEND |
フォグの終了深度 |
|
D3DRS_FOGDENSITY |
指数フォグモードにおけるフォグ濃度 |
|
D3DRS_FOGVERTEXMODE |
頂点フォグのフォグ式の設定 |
|
D3DRS_RANGEFOGENABLE |
範囲フォグの使用の切り替え |
|
ステンシルバッファ |
|
|
D3DRS_STENCILENABLE |
ステンシルバッファの使用の切り替え |
|
D3DRS_STENCILFAIL |
ステンシル テストに失敗したときに実行するステンシル処理 |
|
D3DRS_STENCILZFAIL |
ステンシル テストに合格し、深度テストに失敗した場合のステンシル処理 |
|
D3DRS_STENCILPASS |
ステンシル テストと深度テストに合格した場合のステンシル処理 |
|
D3DRS_STENCILFUNC |
ステンシル テストのための比較関数 |
|
D3DRS_STENCILREF |
ステンシル テストのための比較値 |
|
D3DRS_STENCILMASK |
ステンシル テストのための有効ビットを決定するためのマスク値 |
|
D3DRS_STENCILWRITEMASK |
ステンシル バッファに書き込む値に適用する書き込みマスクの値 |
|
D3DRS_TWOSIDEDSTENCILMODE |
2サイド ステンシルの機能を切り替え |
|
D3DRS_CCW_STENCILFAIL |
CCWステンシルテストに失格した時の処理 |
|
D3DRS_CCW_STENCILZFAIL |
CCWステンシル テストに合格し、深度テストに失敗した場合の処理 |
|
D3DRS_CCW_STENCILPASS |
CCWステンシル テストと深度テストに合格した場合のステンシル処理 |
|
D3DRS_CCW_STENCILFUNC |
CCWステンシルテストで用いる比較関数 |
|
光源計算 |
|
|
D3DRS_LIGHTING |
固定機能によるライティングの切り替え |
|
D3DRS_SPECULARENABLE |
||
D3DRS_COLORVERTEX |
頂点色の使用の切り替え |
|
D3DRS_AMBIENT |
環境光の色 |
|
D3DRS_LOCALVIEWER |
カメラとの相対角度に依存した鏡面反射光の計算 |
|
D3DRS_NORMALIZENORMALS |
頂点法線の自動正規化を有効 |
|
D3DRS_DIFFUSEMATERIALSOURCE |
光源計算に使用される拡散色 |
|
光源計算に使用される鏡面反射色 |
||
D3DRS_AMBIENTMATERIALSOURCE |
光源計算に使用される環境色 |
|
D3DRS_EMISSIVEMATERIALSOURCE |
光源計算に使用される発光照明色 |
|
ジオメトリ ブレンディング |
|
|
D3DRS_VERTEXBLEND |
ジオメトリ ブレンディングを実行するために使用する行列の個数 |
|
D3DRS_INDEXEDVERTEXBLENDENABLE |
インデックス付きの頂点ブレンディングの切り替え |
|
D3DRS_TWEENFACTOR |
トゥイーン係数の指定 |
|
ポイント プリミティブ |
|
|
D3DRS_POINTSIZE |
ポイント サイズ計算で使用するサイズ |
|
D3DRS_POINTSIZE_MIN |
ポイント スプライトの最小サイズ |
|
D3DRS_POINTSIZE_MAX |
ポイント スプライトの最大サイズ |
|
D3DRS_POINTSPRITEENABLE |
テクスチャ インデックスの割り当ては |
|
D3DRS_POINTSCALEENABLE |
ポイント プリミティブに対するサイズの計算の切り替え |
|
D3DRS_POINTSCALE_A |
ポイント プリミティブに対する距離ベースのサイズの減衰定数 |
|
D3DRS_POINTSCALE_B |
ポイント プリミティブに対する距離ベースのサイズの減衰定数 |
|
D3DRS_POINTSCALE_C |
ポイント プリミティブに対する距離ベースのサイズの減衰定数 |
|
テッセレーション |
|
|
D3DRS_PATCHEDGESTYLE |
パッチエッジに関するテッセレーションの切り替え |
|
D3DRS_POSITIONDEGREE |
Nパッチの座標の補間の程度を設定 |
|
D3DRS_NORMALDEGREE |
Nパッチの法線の補間の程度を設定 |
|
D3DRS_ENABLEADAPTIVETESSELATION |
適応型テッセレーションを有効に |
|
D3DRS_MINTESSELATIONLEVEL |
テッセレーションのレベルの最小値を指定 |
|
D3DRS_MAXTESSELATIONLEVEL |
テッセレーションのレベルの最大値を指定 |
|
D3DRS_ADAPTIVETESS_X |
X軸方向に関する適応型テッセレーションの量を設定 |
|
D3DRS_ADAPTIVETESS_Y |
Y軸方向に関する適応型テッセレーションの量を設定 |
|
D3DRS_ADAPTIVETESS_Z |
Z軸方向に関する適応型テッセレーションの量を設定 |
|
D3DRS_ADAPTIVETESS_W |
W軸方向に関する適応型テッセレーションの量を設定 |
|
デバッグ |
|
|
D3DRS_DEBUGMONITORTOKEN |
モニタのデバッグの切り替え |
|
アルファ合成による透明化を有効にするには、TRUE を設定します。初期値は FALSE です。アルファ合成と呼びますが、アルファ成分以外の係数も合計の重みに使うことができます。アルファ合成の合成方法は、D3DRS_BLENDOPで、合成の合成係数は、D3DRS_SRCBLEND と D3DRS_DESTBLEND やD3DRS_BLENDOPのレンダリング ステートによって決定されます。
アルファ合成する時のこれから描画するポリゴンの合成係数を設定します。値は、D3DBLEND列挙型です。初期値は、D3DBLEND_ONEです。D3DBLEND列挙型には、次の種類があります。
ブレンディング係数は (0, 0, 0, 0)です。
ブレンディング係数は (1, 1, 1, 1)です。
ブレンディング係数は (Rs, Gs, Bs, As) です。Rs, Gs, Bs, Asは、ソース(描こうとするポリゴン)の赤、緑、青、アルファの成分です。
ブレンディング係数は (1-Rs, 1-Gs, 1-Bs, 1-As) です。
ブレンディング係数は (As, As, As, As) です。
ブレンディング計数は (1-As, 1-As, 1-As, 1-As) です。
ブレンディング係数は (Ad, Ad, Ad, Ad) です。Adは、デスティネーション(描画しようとするレンダリングターゲット)のアルファの成分です。
ブレンディング計数は (1-Ad, 1-Ad, 1-Ad, 1-Ad) です。
ブレンディング係数は (Rd, Gd, Bd, Ad) です。Rd, Gd, Bdは、デスティネーションの赤、緑、青の成分です。
ブレンディング計数は (1-Rd, 1-Gd, 1-Bd, 1-Ad) です。
ブレンディング係数は、(f, f, f, 1)、f = min(As, 1-Ad) です。
古いやつなので、つかっちゃだめです。
転送元のブレンディング係数は (1-As, 1-As, 1-As, 1-As) で、転送先のブレンディング係数は (As, As, As, As) です。転送先のブレンディングの選択は無効になります。このブレンディング モードは、D3DRS_SRCBLENDステートに対してのみサポートされます。
フレームバッファ合成時に使われる定数色で合成されます。このブレンディング モードは、D3DPBLEND_BLENDFACTOR が有効な時に使用できます。
フレームバッファ合成時に使われる定数色を反転した色で合成されます。このブレンディング モードは、D3DPBLEND_BLENDFACTOR が有効な時に使用できます。
アルファ合成する時のすでに描かれているレンダリングターゲットに関する合成係数を設定します。値は、D3DBLEND列挙型です。初期値は、D3DBLEND_ZEROです。
アルファ ブレンディング レンダリング ステートD3DRS_ALPHABLENDENABLE が TRUE に設定されているときに適用される算術演算を選択します。有効値は、D3DBLENDOP 列挙型です。初期値は D3DBLENDOP_ADD です。
D3DPMISCCAPS_BLENDOP デバイス能力がサポートされていない場合は、D3DBLENDOP_ADD が実行されます。
D3DBLENDOP列挙型には、次の種類があります。
結果は転送元に転送先が加算されます。
結果 = 転送元 + 転送先
結果は転送元から転送先が減算されます。
結果 = 転送元 - 転送先
結果は転送先から転送元が減算されます。
結果 =転送先 - 転送元
結果は転送元と転送先の最小値になります。
結果 = MIN(転送元, 転送先)
結果は転送元と転送先の最大値になります。
結果 = MAX (転送元, 転送先)
D3DTA_TFACTOR テクスチャ ブレンディング引数、または D3DTOP_BLENDFACTORALPHA テクスチャ ブレンディング処理を用いたマルチテクスチャ ブレンディングで使用される色を指定します。設定する値は D3DCOLOR 変数です。初期値は 白色(0xFFFFFFFF)です。
アルファ合成に関して、定数の合成係数を指定します。この機能は、D3DCAPS9.SrcBlendCapsかD3DCAPS9.DestBlendCapsのD3DPBLENDCAPS_BLENDFACTORビットが立っていないといけません。
アルファ合成時に、フレームバッファのアルファ成分に関して別の合成方法をするための設定です。初期値は FALSE です。アルファ成分の合成の合成方法は、D3DRS_BLENDOPで、合成の合成係数は、D3DRS_SRCBLENDALPHAと D3DRS_ DESTBLENDALPHAとBLENDOPALPHAのレンダリング ステートによって決定されます。D3DPMISCCAPS_SEPARATEALPHABLENDが有効でないと設定できません。
アルファ成分に合成する時のこれから描画するポリゴンの合成係数を設定します。値は、D3DBLEND列挙型です。初期値は、D3DBLEND_ONEです。D3DBLEND列挙型には、次の種類があります。
アルファ成分に合成する時のすでに描かれているレンダリングターゲットに関する合成係数を設定します。値は、D3DBLEND列挙型です。初期値は、D3DBLEND_ZEROです。
D3DRS_SRCBLENDALPHAがTRUEに設定されていて、アルファ ブレンディング D3DRS_ALPHABLENDENABLE が TRUE になっているときに、フレームバッファのアルファ成分に適用される算術演算を選択します。有効値は、D3DBLENDOP 列挙型です。初期値は D3DBLENDOP_ADD です。
D3DPMISCCAPS_BLENDOPデバイス能力がサポートされていない場合は、D3DBLENDOP_ADD が実行されます。
深度バッファに関する設定を行います。設定する値は、D3DZBUFFERTYPE列挙型です。D3DPRESENT_PARAMETERS 構造体の EnableAutoDepthStencil メンバに TRUE を設定しておき、深度ステンシルがスワップチェーンと共に作成されている場合、このレンダリング ステートの初期値は TD3DZB_TRUE、そうでない場合は D3DZB_FALSE になります。
D3DZBUFFERTYPE列挙型は、次の種類があります。
射影空間でのzの値を深度バッファに使います(Zバッファ)。
射影空間でのwの値を深度バッファに使います(Wバッファ)。この深度は、透視変換されない、ビュー空間でのz座標の深度になります。
深度バッファを使用しません。
ピクセルの深度値を深度バッファの値と比較する時の比較関数を指定します。ピクセルの深度値がこのステートで設定される比較関数で合格した場合にピクセルが書き込まれます。設定する値は、D3DCMPFUNC列挙型です。初期値は D3DCMP_LESSEQUALです。このステートは、カメラからの距離を基準とするピクセルの描画するかどうかの評価方法を設定します。
この深度テストに失敗しやすくなるようにオブジェクトやポリゴンを並び替えたほうが、ソフトウェアや多くのハードウェア アクセラレータによる処理は速くなります。それは、ピクセルのレンダリング処理を行わない場合に、テクスチャをフィルタ処理したりレンダリング ターゲットとの合成をする必要がなくなるからです。
D3DCMPFUNC列挙型は、次の種類があります。
テストは常に失敗します。
新しいピクセル値が、現在のピクセル値より小さいときに成功とみなします。
新しいピクセル値が、現在のピクセル値と等しいときに成功とみなします。
新しいピクセル値が、現在のピクセル値以下のときに成功とみなします。
新しいピクセル値が、現在のピクセル値より大きいときに成功とみなします。
新しいピクセル値が、現在のピクセル値と等しくないときに成功とみなします。
新しいピクセル値が、現在のピクセル値以上のときに成功とみなします。
テストは常に成功します。
深度バッファへの書き込みを制御します。深度バッファへ書き込むには、TRUE に設定します。初期値は TRUE です。このレンダリングステートをFALSEにすると、深度バッファを汚しません。つまり、ポリゴンを描画する時に、深度の比較はしますが、(テストに合格したポリゴンでも)深度バッファに新たな深度を書き込みまない芸当ができます。影の作成時など、同じ深度情報を使って何回もレンダリングする時に有効です。
塗りつぶす部分を設定します。設定する値は、D3DFILLMODE列挙型です。初期値は D3DFILL_SOLID です。D3DFILLMODE列挙型は、次の種類があります。
点で頂点を打ちます。
線で描画します。
ポリゴン全体を面で塗りつぶします。
塗りつぶすときのグラデーションを設定します。設定する値は、D3DSHADEMODE列挙型です。初期値は D3DSHADE_GOURAUD です。D3DSHADEMODE列挙型で有効な物には、次の種類があります。
フラットシェーディングで塗りつぶします。三角形の最初の頂点の色が、表面の色を決定するために使われます。この色は三角形全体にわたってむらなく適用される。つまり、補間されないでベタに塗りつぶされます。ただし、鏡面反射光のα成分は補間されます。
グーローシェーディングで塗りつぶします。表面の色は、三角形の 3 つの頂点間で、線形補間により決定されます。
あと、フォンシェーディングをするD3DSHADE_PHONGというものもありますが、サポートされていません。照明計算にそれほどこだわりがない人は、いい加減にサポートして欲しいという愚痴を良く効くので、Microsoftさんには、早くサポートしてもらいたいですねぇ。
D3DRS_LASTPIXELをFALSEにすると、最後のピクセルを描画しないレンダリングが行えます。線の最後のピクセルを描画すると周囲のプリミティブと重なり、見た目が悪くなることがあります。このようなときに、このレンダリング ステートは効果的です。初期値は TRUE です。ただし、この設定を変更するときは注意が必要です。場合によっては、最後のピクセルを描画しないようにするとプリミティブ間に隙間が生じ、見苦しくなることがあります。
ディザリングを可能にするには、TRUE に設定します。初期値は FALSE です。
直線の描画に対してアンチエイリアスをかけるか指定します。BOOL値(TRUEかFALSE)で設定します。
マルチサンプル レンダリング ターゲットにレンダリングする時は、D3DRS_ANTIALIASEDLINEENABLEは無効になり、アンチエイリアスはかかりません。マルチサンプル レンダリング ターゲットでアンチエイリアスがかかった線を描画する時は、ID3DXLineを使ってください。
射影空間において、ポリゴンの三角形の表と裏を判定する方法を指定します。設定する値は、D3DCULL列挙型です。初期値は D3DCULL_CCWです。D3DCULL列挙型は、次の種類があります。
背面の判定をしないで両面描画します。
右回り(clockwise)に頂点が並んでいる3角形を背面とします。
左回り(counterclockwise)に頂点が並んでいる3角形を背面とします
プリミティブの視錐台クリッピングを設定します。有効にするには TRUE、無効にするには FALSE を設定します。初期値値は TRUE です。
ユーザー定義クリップ面を有効にします。有効な値は、各ビットのステータス (設定の有無) によって対応するユーザー定義クリップ面をアクティブにするステートを切り替える任意の DWORD です。最下位ビット (ビット 0) はインデックス 0 の最初のクリップ面を制御し、後続ビットはそれより上位のインデックスのクリップ面に関してアクティブにするか制御します。ビットが設定されている場合、シーンのレンダリング中に適切なクリップ面が適用されます。初期値は0 です。
クリップ面を簡単に有効にできるように、D3DCLIPPLANEn マクロが定義されています。
シザリングテストの切り替えを行います。BOOL値で設定します。
複数のテクスチャ座標セットに対するテクスチャラッピング動作を指定します。これらのレンダリング ステートの有効値として、D3DWRAPCOORD_0 (または D3DWRAP_U)、D3DWRAPCOORD_1 (または D3DWRAP_V)、D3DWRAPCOORD_2 (または D3DWRAP_W)、および D3DWRAPCOORD_3 の各フラグを組み合わせることができます。これらの値を設定すると、指定されたテクスチャに対して 1、2、3、および 4 次元方向 (s、t、r、および q 方向と呼ばれる場合もある) のラッピングが実行されます。これらのレンダリング ステートの初期値は 0 (全方向のラッピングが無効)です。
テクスチャ アドレッシング モードを D3DTADDRESS_WRAP に設定することと、テクスチャ ラッピングを実行することとは同じではないことに注意する必要があります。テクスチャ アドレッシング モードを D3DTADDRESS_WRAP に設定すると、現在のプリミティブに適用される転送元テクスチャのコピーが複数生成されます。テクスチャ ラッピングを有効にすると、テクスチャ処理されたポリゴンをシステムがラスタ処理する際の方法が変更されます。テクスチャ ラッピングを効果的に有効にすると、[0.0, 1.0] 外にあるテクスチャ座標を無効にでき、このような不適切なテクスチャ座標のラスタ化の動作を未定義にできます。テクスチャ ラッピングが有効になっていると、テクスチャ アドレッシング モードは使用されません。テクスチャ ラッピングが有効になっている場合には、アプリケーションで指定するテクスチャ座標が0.0 より小さく、または 1.0 より大きくならないように注意してください。
アルファテストを使用する切り替えを行います。アルファ テストを可能にするには、TRUE を設定します。初期値は、FALSEです。このレンダリングステートを使用すると、「アルファ値に基づいてピクセルを描画しないテスト」を使えます。
描画するピクセルのアルファ値を、D3DRS_ALPHAFUNC レンダリング ステートにより提供される比較関数を用いてD3DRS_ALPHAREFステートに設定された参照アルファ値と比較されます。このモードが可能になると、テストが成功した場合に限り、ピクセルは描画されます。
アルファテスト時の基準アルファ値を指定します。これは、DWORD レンダリング ステート値の下位 8 ビットにあたる 8 ビット値になります。値は 0x00000000 から 0x000000FF の範囲内です。
アルファテストする時の評価方法を設定します。値は、D3DCMPFUNC型です。初期値は、D3DCMP_ALWAYS になります。このステートは、書き込むアルファ値をD3DRS_ALPHAREFで設定する基準になるピクセルと比較して、受け取りや受け取り拒否を判定する方法を設定します。
レンダリングターゲットの書き込みに対してsRGBのガンマ補正を有効にします。レンダリングターゲットのフォーマットに関して、D3DUSAGE_SRGBWRITEが対応しているか確認する必要があります。
レンダリング ターゲットのカラー バッファに対する色の成分ごとの書き込みを有効にします。このレンダリング ステートに対する有効な値は、D3DCOLORWRITEENABLE_ALPHA、D3DCOLORWRITEENABLE_BLUE、D3DCOLORWRITEENABLE_GREEN、および D3DCOLORWRITEENABLE_RED の各フラグの任意の組み合わせになります。ビットを設定すると、レンダリングした時にその色の成分が更新されます。ビットをクリアすると、クリアした色成分は更新されません。機能を利用するためには、デバイスに対する D3DCAPS9 構造体の PrimitiveMiscCaps メンバの D3DPMISCCAPS_COLORWRITEENABLE 能力ビットを設定します。このレンダリング ステートは、画面クリア処理には影響を与えません。初期値は 0x0000000F(=D3DCOLORWRITEENABLE_ALPHA| D3DCOLORWRITEENABLE_BLUE| D3DCOLORWRITEENABLE_GREEN| D3DCOLORWRITEENABLE_RED) です。
複数のレンダリング ターゲットに関する色の成分ごとの書き込みを有効にします。この機能は、D3DCAPS9構造体のPrimitiveMiscCpasメンバのD3DPMISCCAPS_INDEPENDENTWRITEMASKSビットが立っているときに有効です。
マルチサンプル レンダリングのターゲット バッファを使うときの、個々のサンプルの計算方法を決定するBOOL値です。TRUE を設定すると、複数サンプルのそれぞれについて異なるサンプリング位置でサンプリングすることでフルシーン アンチエイリアシングを実行するように、複数のサンプルが計算されます。FALSE を設定すると、複数のサンプルはすべて同じサンプリング値 (ピクセルの中心でサンプリングされた値) で記述されます。このレンダリング ステートの設定によって、マルチサンプル バッファに対する非アンチエイリアシング レンダリングが可能になります。シングル サンプル バッファへのレンダリング時は、このレンダリング ステートの効果はありません。初期値は TRUE になります。
このマスクの各ビットは、マルチサンプル レンダリング ターゲットのサンプルの 1 つについての変更を制御します。したがって、8 サンプルのレンダリング ターゲットの場合は、8 つのサンプルのそれぞれに対する 8 つの書き込み許可情報が、格納されます。シングル サンプル バッファへのレンダリング時は、このレンダリング ステートの効果はありません。初期値は 0xFFFFFFFF です。
このレンダリング ステートを使うと、マルチサンプル バッファを蓄積(accumulation)バッファとして使い、各パスがサンプルのサブセットを更新するジオメトリのマルチパス レンダリングを行うことができます。
このサンプリングステートは、D3DCAPS9構造体のD3DPRASTERCAPS_STRETCHBLTMULTISAMPLEメンバが有効な時には使えません。
フォグ ブレンディングを可能にするには、TRUE を設定します。初期値は FALSE です。
フォグの色を指定します。指定する型は、D3DCOLOR型です。初期値は、0になっています。
ピクセル フォグに使用されるフォグ式を設定します。D3DFOGMODE 列挙型のメンバのいずれかを設定します。初期値は D3DFOG_NONE です。
D3DFOGMODE列挙型は、幾つか種類がありますが、使えるのは次の種類だけです。
フォグはかかりません。
次の方程式によって、始点と終点の間で線形にフォグが増します。
線形フォグ モードにおける、フォグ エフェクトの開始深度を指定します。頂点フォグの場合、深度はワールド空間で指定します。ピクセル フォグの場合は、射影空間 [0.0, 1.0] またはワールド空間のいずれかで指定します。ピクセル フォグでは、フォグ計算に Z が使用される場合、これらの値は射影空間にあり、視点との相対フォグ (W フォグ) が使用される場合はワールド空間にあります。
このレンダリング ステートの値は浮動小数点値です。IDirect3Ddevice9::SetRenderState メソッドは DWORD 値を使用するため、次のコードに示すように、アプリケーションでは値を格納した変数をキャストしなければなりません。
IDirect3DDevice9::SetRenderState(D3DRS_FOGSTART, *((DWORD*) (&fFogStart)));
線形フォグ モードにおける、フォグ エフェクトの開始深度を設定します。
このレンダリング ステートの値は浮動小数点値です。IDirect3Ddevice9::SetRenderState メソッドは DWORD 値を使用するため、次のコードに示すように、アプリケーションでは値を格納した変数をキャストしなければなりません。
IDirect3DDevice9::SetRenderState(D3DRS_FOGSTART, *((DWORD*) (&fFogEnd)));
指数フォグ モード (D3DFOG_EXP および D3DFOG_EXP2) で使用するフォグ密度ですが、指数フォグはサポートされていないので、いみなないですね。
頂点フォグ用のフォグ式を指定します。D3DFOGMODE 列挙型のメンバのいずれかを設定します。初期値は D3DFOG_NONE です。
範囲ベースのフォグを有効にします。初期値は、FALSEです。FALSEの場合には深度ベースのフォグが使用されます。範囲ベースのフォグでは、シーンにおけるオブジェクトの深さ (z 座標) ではなく、カメラからのオブジェクトの距離でフォグの濃さを計算します。範囲ベースのフォグでは、通常のすべてのフォグの機能が働きますが、深度ではなく範囲を使って計算を行う点だけが異なります。
現在のところ、ピクセル単位の範囲ベースのフォグをサポートするハードウェアは存在しないため、範囲補正は頂点フォグでのみ行われます。
ステンシルバッファによる処理を可能にするには TRUEにします。初期値は FALSE です。
ステンシル テストに失敗したときに実行するステンシル処理を設定します。これには、D3DSTENCILCAPS 定数のいずれかが設定できます。初期値は D3DSTENCILOP_KEEP です。
D3DSTENCILCAPS定数は、次の種類があります。
ステンシルバッファの内容は変更しません。
ステンシルバッファの内容を0にします。
ステンシルバッファの内容を参照値に置き換えます。
ステンシルバッファの内容を+1します。最大値以上は最大値にします。
ステンシルバッファの内容を−1します。0以下は0にします。
ステンシルバッファの内容をビット反転します。
ステンシルバッファの内容を+1します。最大値にきたら0にします。
ステンシルバッファの内容を−1します。0未満は最大値にします。
両面ステンシルバッファの設定を使用します。
ステンシル テストに合格し、深度テスト (Z テスト) に失敗した場合に実行するステンシル処理を設定します。これにはD3DSTENCILCAPS 定数のいずれかを設定します。初期値は D3DSTENCILOP_KEEP です。
ステンシル テストおよび深度 (Z) テストの両方にパスした場合に実行するステンシル処理を設定します。これには D3DSTENCILCAPS 定数のいずれかを設定します。初期値は D3DSTENCILOP_KEEP です。
ステンシル テストのための比較関数を設定します。これには D3DCMPFUNC列挙型のメンバのいずれかを設定します。初期値は、D3DCMP_ALWAYS です。D3DCMPFUNCに関しては、D3DRS_ZFUNCの項目を見てください。
比較関数は、ステンシル バッファの要素を基準値と比較します。この比較は、基準値のビットと、ステンシル マスク (D3DRS_STENCILMASK レンダリング ステートにより設定されます) に設定されたステンシル バッファ要素にのみ適用されます。この比較関数の結果がTRUE の場合に、ステンシル テストに合格したことになります。
ステンシル テストのための整数型の基準値です。初期値は 0 です。
基準値と、それぞれのステンシル バッファ要素に乗算を施し、ステンシル テストのための有効ビットを決定するためのマスク値です。初期値は 0xFFFFFFFF です。
ステンシル バッファに書き込む値に適用する書き込みマスクの値です。初期値は 0xFFFFFFFF です。
両面ステンシルの機能を有効にします。この機能を活用するためには、D3DRS_CULLMODEにD3DCULL_NONEを設定してください。もし、射影空間のxy平面でのポリゴンの向きが時計方向ならば、D3DRS_STENCIL* の値がステンシルバッファの操作に使われます。反対方向ならば、D3DRS_CCW_STENCIL* が使われます。
両面ステンシル機能が使えるかどうかは、StencilCapsのD3DSTENCILCAPS_TWOSIDEDを調べる必要があります。
CCWステンシルテストに失格した時の処理です。
CCWステンシルテストに合格して、深度テストに失格した時の処理です。
CCWステンシルテストと深度テストに合格した時の処理です。
CCWステンシルテストで用いる比較関数です。
if ((参照値 & マスク) 比較関数 (ステンシル値 & マスク)) がTRUEの時にテストは合格します。
DirectX の固定機能による光源計算を有効にします。有効にするには TRUE、無効にするには FALSE を設定します。初期値は TRUE です。頂点法線を含む頂点のみ正しくライトが当てられます。法線を含まない頂点では、法線ベクトルを0ベクトルにした計算が使用されます。
固定機能における鏡面反射を可能にするには、TRUE に設定します。初期値は FALSE です。
鏡面反射光は、光の当たっているオブジェクトの各頂点がそのオブジェクトの原点にあるかのように計算されます。つまり、頂点の法線だけに依存して計算します。これによって、オブジェクトは原点の周囲でモデル化されます。光源とオブジェクト間の距離が比較的大きい場合に限り、結果は正しくなります。
D3DRS_SPECULARENABLEを TRUE に設定すると、テクスチャを張った後の段階のアルファ合成をする前に、鏡面反射色が追加されます。
頂点色を有効にします。有効にするには TRUE、無効にするには FALSE を設定します。初期値は TRUE です。頂点色を有効にすると、個々の頂点に定義された色が光源計算に含まれるようになります。
環境光の色を設定します。この値はD3DCOLOR 型です。初期値は 0 です。
カメラとの相対角度に依存した鏡面反射光の計算をします。スペキュラ ハイライトを有効にするには、TRUE を設定します。直行スペキュラ ハイライトを使用するには、FALSE を設定します。デフォルト値は TRUE です。正射影を使用するアプリケーションでは FALSE を設定してください。
頂点法線の自動正規化を有効にします。有効にするにはTRUE、無効にするには FALSE を設定します。初期値は FALSE です。この機能を有効にすると、頂点がカメラ空間に変換された後で頂点法線が正規化されます。ただし、計算負荷は高くなります。
光源計算に使用される拡散色を指定します。有効な値は、D3DMATERIALCOLORCOURCE列挙型になります。初期値は D3DMCS_COLOR1 です。このレンダリング ステートの値が使用されるのは、D3DRS_COLORVERTEX レンダリング ステートが TRUE に設定されている場合だけです。
D3DMATERIALCOLORCOURCE列挙型は、次の種類があります。
現在のマテリアルの色を使用します。
ディフューズ頂点色を使用します。
スペキュラ頂点色を使用します。
光源計算に使用される鏡面反射色を指定します。有効な値は、D3DMATERIALCOLORCOURCE列挙型になります。初期値はD3DMCS_COLOR2 です。
光源計算に使用される環境色を指定します。有効な値は、D3DMATERIALCOLORCOURCE列挙型になります。初期値は D3DMCS_COLOR2 です。
光源計算に使用される発光照明色を指定します。有効な値は、D3DMATERIALCOLORCOURCE列挙型になります。初期値は D3DMCS_MATERIAL です。
ジオメトリ ブレンディングを実行するために使用する行列の個数を設定します。設定する値は D3DVERTEXBLENDFLAGS 列挙型のメンバです。初期値は D3DVBF_DISABLE です。
D3DVERTEXBLENDFLAGS列挙型は、次の種類があります。
頂点ブレンディングを無効にします。D3DTS_WORLDMATRIXマクロによって設定されたワールド行列のみを適用します。トランスフォーム ステートに対するインデックス値は 0 です。
D3DTS_WORLDMATRIXマクロによって設定された 2 つの行列間の頂点ブレンディングを有効にします。トランスフォーム ステートに対するインデックス値は、0 および 1 です。
D3DTS_WORLDMATRIXマクロによって設定された 3 つの行列間の頂点ブレンディングを有効にします。トランスフォーム ステートに対するインデックス値は、0, 1 および 2 です。
D3DTS_WORLDMATRIXマクロによって設定された 4 つの行列間の頂点ブレンディングを有効にします。トランスフォーム
ステートに対するインデックス値は、0, 1, 2 および 3 です。
頂点ブレンディングは、D3DRS_TWEENFACTOR に割り当てられた値を使って行います。
1.0 の重みで単一の行列を使用する。
インデックス付きの頂点ブレンディングを有効にします。設定する値はBOOL値です。初期値はFALSEです。TRUE を設定すると、インデックス付き頂点ブレンディングが有効になります。このレンダリング ステートを有効にする場合は、まとめたDWORD を頂点ごとに行列インデックスとして渡さなければなりません。このレンダリング ステートを無効にして、D3DRS_VERTEXBLEND ステートを使って頂点ブレンディングすることは、すべての頂点について行列インデックス 0, 1, 2, 3 を指定して計算することと等しくなります。
トゥイーン係数を浮動小数点数値で制御します。初期値は0.0fです。
このレンダリング ステートの値は浮動小数点値です。IDirect3Ddevice9::SetRenderState メソッドは DWORD 値を使用するため、次のコードに示すように、アプリケーションでは値を格納した変数をキャストしなければなりません。
pDevice9->SetRenderState(D3DRS_TWEENFACTOR,
*((DWORD*)&TweenFactor));
各頂点に対してポイント サイズが指定されていない場合に、ポイント サイズ計算で使用するサイズを浮動小数点値で指定します。頂点がポイント サイズを含んでいる場合、この値は使用されません。この値は、D3DRS_POINTSCALEENABLE が FALSE の場合はスクリーン空間単位で指定します。それ以外の場合は、ワールド空間単位で指定します。初期値は 1.0f です。この値の範囲は、0.0f 以上です。
このレンダリング ステートの値は浮動小数点値です。IDirect3Ddevice9::SetRenderState
メソッドは DWORD 値を使用するため、次のコードに示すように、アプリケーションでは値を格納した変数をキャストしなければなりません。
pDevice9->SetRenderState(D3DRS_POINTSIZE, *((DWORD*)&PointSize));
ポイント スプライトが制限される最小サイズを浮動小数点値で指定します。レンダリングの間、ポイント プリミティブはこのサイズに抑えられます。1.0 より小さい値を設定したときに、ポイントにピクセルの中心が含まれずにアンチエイリアシングが無効になっている場合はポイントが表示されなくなります。アンチエイリアシングが有効になっている場合は低い輝度でレンダリングされます。初期値は 1.0f です。この値の範囲は、0.0f 以上です。
このレンダリング ステートの値は浮動小数点値です。IDirect3Ddevice9::SetRenderState
メソッドは DWORD 値を使用するため、次のコードに示すように、アプリケーションでは値を格納した変数をキャストしなければなりません。
pDevice9->SetRenderState(D3DRS_POINTSIZE,
*((DWORD*)&PointSize));
ポイント スプライトが制限される最大サイズを浮動小数点値で指定します。値は、D3DCAPS9 の MaxPointSize メンバ以下で、D3DRS_POINTSIZE_MIN 以上でなければなりません。初期値は64.0fです。
このレンダリング ステートの値は浮動小数点値です。IDirect3Ddevice9::SetRenderState メソッドは DWORD 値を使用するため、次のコードに示すように、アプリケーションでは値を格納した変数をキャストしなければなりません。
pDevice9->SetRenderState(D3DRS_PONTSIZE_MAX, *((DWORD*)&PointSizeMax));
設定する値は、BOOL値です。TRUE を設定すると、テクスチャ全体が各ポイントにマッピングされるように、ポイント プリミティブのテクスチャ座標が設定されます。FALSE を設定すると、頂点のテクスチャ座標がポイント全体に対して使用されます。初期値は FALSE です。D3DRS_POINTSCALEENABLE に FALSE (デフォルト値) を設定し、D3DRS_POINTSIZE に 1.0 (デフォルト値) を設定することで、DirectX 7 スタイルのシングルピクセル ポイントを実現できます。
ポイント プリミティブに対するサイズの計算を制御します。設定する値は、BOOL値です。TRUE を設定すると、ポイント サイズは、カメラ空間の値として解釈され、距離関数および視錐台によってビューポートの Y 軸のスケーリングになるように調整されて、最終的なスクリーン空間のポイント サイズが計算されます。FALSE を設定すると、ポイント サイズはスクリーン空間の値と解釈されて、そのまま使われます。初期値は FALSE です。
ポイント プリミティブに対する距離ベースのサイズの減衰を浮動小数点値で制御します。D3DRS_POINTSCALEENABLE が TRUE の場合にのみ有効です。デフォルト値は 1.0f です。この値の範囲は、0.0f 以上になります。
このレンダリング ステートの値は浮動小数点値です。IDirect3Ddevice9::SetRenderState
メソッドは DWORD 値を使用するため、次のコードに示すように、アプリケーションでは値を格納した変数をキャストしなければなりません。
pDevice9->SetRenderState(D3DRS_POINTSCALE_A, *((DWORD*)&PointScaleA));
ポイント プリミティブに対する距離ベースのサイズの減衰を浮動小数点値で制御します。D3DRS_POINTSCALEENABLE が TRUE の場合のみ有効です。デフォルト値は 0.0f です。この値の範囲は、0.0f 以上になります。
このレンダリング ステートの値は浮動小数点値です。IDirect3Ddevice9::SetRenderState メソッドは DWORD 値を使用するため、次のコードに示すように、アプリケーションでは値を格納した変数をキャストしなければなりません。
pDevice9->SetRenderState(D3DRS_POINTSCALE_B,
*((DWORD*)&PointScaleB));
ポイント プリミティブに対する距離ベースのサイズの減衰を浮動小数点値で制御します。D3DRS_POINTSCALEENABLE が TRUE の場合のみ有効です。デフォルト値は 0.0f です。この値の範囲は、0.0f 以上になります。
このレンダリング ステートの値は浮動小数点値です。IDirect3Ddevice9::SetRenderState メソッドは DWORD 値を使用するため、次のコードに示すように、アプリケーションでは値を格納した変数をキャストしなければなりません。
pDevice9->SetRenderState(D3DRS_POINTSCALE_C,
*((DWORD*)&PointScaleC));
パッチ エッジが浮動小数点数スタイルのテッセレーションを使用するかどうかを設定します。設定可能な値は、D3DPATCHEDGESTYLE 列挙型で定義されます。初期値は、D3DPATCHEDGE_DISCRETEです。
D3DPATCHEDGESTYLE 列挙型は、次の種類があります。
個別エッジ スタイル。個別モードでは、浮動小数点数のテッセレーションを指定できますが、整数に切り詰められます。
連続エッジ スタイル。連続モードでは、テッセレーションは浮動小数点数値として指定され、なめらかに変化させて不自然な効果「ポッピング」を減少させることができます。
Nパッチの座標の補間の程度を設定します。値は、D3DDEGREE_CUBIC (初期値) もしくは D3DDEGREE_LINEARが指定できます。
D3DDEGREETYPE列挙型は、次の種類があります。
曲線は、1次のオーダーで記述されます。
曲線は、2次のオーダーで記述されます。
曲線は、3次のオーダーで記述されます。
曲線は、4次のオーダーで記述されます。
Nパッチの法線の補間の程度を設定します。値は、D3DDEGREE_LINEAR (初期値) もしくはD3DDEGREE_QUADRATICが指定できます。
適応型テッセレーションを有効にします。初期値はFALSEです。
テッセレーションのレベルの最小値を指定します。初期値は1.0fです。
テッセレーションのレベルの最大値を指定します。初期値は1.0fです。
X軸方向に関する適応型テッセレーションの量を設定します。初期値は0.0fです。
Y軸方向に関する適応型テッセレーションの量を設定します。初期値は0.0fです。
Z軸方向に関する適応型テッセレーションの量を設定します。初期値は0.0fです。
W軸方向に関する適応型テッセレーションの量を設定します。初期値は0.0fです。
モニタをデバッグする場合にのみ設定します。設定可能な値は、D3DDEBUGMONITORTOKENS 列挙型で定義されます。D3DRS_DEBUGMONITORTOKEN が設定されている場合、この呼び出しはデバッグ モニタへのトークンの受け渡しとして処理されることに注意してください。たとえば、D3DDMT_ENABLE または D3DDMT_DISABLE を D3DRS_DEBUGMONITORTOKEN に渡した後、ほかのトークンの値が渡された場合、デバッグ モニタのステート (有効または無効) は変化しません。
このステートは、デバッグ ビルドでのみ有用です。デバッグ モニタの初期値は D3DDMT_ENABLE になります。
D3DDEBUGMONITORTOKENS列挙型は、次の種類があります。
モニタのデバッグを有効にします。
モニタのデバッグを無効にします。