Microsoft DirectX 8.0 (C++)

D3DRENDERSTATETYPE

デバイスのレンダリング ステートを定義する。

typedef enum _D3DRENDERSTATETYPE {
    D3DRS_ZENABLE                   =   7,
    D3DRS_FILLMODE                  =   8,
    D3DRS_SHADEMODE                 =   9,
    D3DRS_LINEPATTERN               =  10,
    D3DRS_ZWRITEENABLE              =  14,
    D3DRS_ALPHATESTENABLE           =  15,
    D3DRS_LASTPIXEL                 =  16,
    D3DRS_SRCBLEND                  =  19,
    D3DRS_DESTBLEND                 =  20,
    D3DRS_CULLMODE                  =  22,
    D3DRS_ZFUNC                     =  23,
    D3DRS_ALPHAREF                  =  24,
    D3DRS_ALPHAFUNC                 =  25,
    D3DRS_DITHERENABLE              =  26,
    D3DRS_ALPHABLENDENABLE          =  27,
    D3DRS_FOGENABLE                 =  28,
    D3DRS_SPECULARENABLE            =  29,
    D3DRS_ZVISIBLE                  =  30,
    D3DRS_FOGCOLOR                  =  34,
    D3DRS_FOGTABLEMODE              =  35,
    D3DRS_FOGSTART                  =  36,
    D3DRS_FOGEND                    =  37,
    D3DRS_FOGDENSITY                =  38,
    D3DRS_EDGEANTIALIAS             =  40,
    D3DRS_ZBIAS                     =  47,
    D3DRS_RANGEFOGENABLE            =  48,

    D3DRS_STENCILENABLE             =  52,
    D3DRS_STENCILFAIL               =  53,
    D3DRS_STENCILZFAIL              =  54,
    D3DRS_STENCILPASS               =  55,
    D3DRS_STENCILFUNC               =  56,
    D3DRS_STENCILREF                =  57,
    D3DRS_STENCILMASK               =  58,
    D3DRS_STENCILWRITEMASK          =  59,
    D3DRS_TEXTUREFACTOR             =  60,

    D3DRS_WRAP0                     = 128,
    D3DRS_WRAP1                     = 129,
    D3DRS_WRAP2                     = 130,
    D3DRS_WRAP3                     = 131,
    D3DRS_WRAP4                     = 132,
    D3DRS_WRAP5                     = 133,
    D3DRS_WRAP6                     = 134,
    D3DRS_WRAP7                     = 135,
    D3DRS_CLIPPING                  = 136,
    D3DRS_LIGHTING                  = 137,
    D3DRS_AMBIENT                   = 139,
    D3DRS_FOGVERTEXMODE             = 140,
    D3DRS_COLORVERTEX               = 141,
    D3DRS_LOCALVIEWER               = 142,
    D3DRS_NORMALIZENORMALS          = 143,
    D3DRS_DIFFUSEMATERIALSOURCE     = 145,
    D3DRS_SPECULARMATERIALSOURCE    = 146,
    D3DRS_AMBIENTMATERIALSOURCE     = 147,
    D3DRS_EMISSIVEMATERIALSOURCE    = 148,
    D3DRS_VERTEXBLEND               = 151,
    D3DRS_CLIPPLANEENABLE           = 152,

    D3DRS_SOFTWAREVERTEXPROCESSING  = 153,

    D3DRS_POINTSIZE                 = 154,
    D3DRS_POINTSIZE_MIN             = 155,
    D3DRS_POINTSPRITEENABLE         = 156,

    D3DRS_POINTSCALEENABLE          = 157,
    D3DRS_POINTSCALE_A              = 158,
    D3DRS_POINTSCALE_B              = 159,
    D3DRS_POINTSCALE_C              = 160,

    D3DRS_MULTISAMPLEANTIALIAS      = 161,
    D3DRS_MULTISAMPLEMASK           = 162,

    D3DRS_PATCHEDGESTYLE            = 163,
    D3DRS_PATCHSEGMENTS             = 164,

    D3DRS_DEBUGMONITORTOKEN         = 165,
    D3DRS_POINTSIZE_MAX             = 166,
    D3DRS_INDEXEDVERTEXBLENDENABLE  = 167,
    D3DRS_COLORWRITEENABLE          = 168,
    D3DRS_TWEENFACTOR               = 170,
    D3DRS_BLENDOP                   = 171,

    D3DRS_FORCE_DWORD               = 0x7fffffff
} D3DRENDERSTATETYPE;

定数

D3DRS_ZENABLE
D3DZBUFFERTYPE 列挙型の 1 つのメンバとしての深度バッファ ステート。Z バッファリングを有効にするには D3DZB_TRUE、w バッファリングを有効にするには D3DZB_USEW、深度バッファリングを無効にするには D3DZB_FALSE を、それぞれ設定する。

D3DPRESENT_PARAMETERS 構造体の EnableAutoDepthStencil メンバに TRUE を設定して深度ステンシルがスワップ チェーンと共に作成されている場合、このレンダリング ステートのデフォルト値は TD3DZB_TRUE、そうでない場合は D3DZB_FALSE である。

D3DRS_FILLMODE
D3DFILLMODE 列挙型のメンバのいずれかまたは複数。デフォルト値は D3DFILL_SOLID である。
D3DRS_SHADEMODE
D3DSHADEMODE 列挙型のメンバのいずれかまたは複数。デフォルト値は D3DSHADE_GOURAUD である。
D3DRS_LINEPATTERN
D3DLINEPATTERN 構造体。デフォルト値は wRepeatPattern が 0 で、wLinePattern が 0 である。
D3DRS_ZWRITEENABLE
アプリケーションによる深度バッファへの書き込みを有効にするには、TRUE を設定する。デフォルト値は TRUE である。アプリケーションはこのメンバを利用することにより、システムが新しい深度値で深度バッファを更新してしまうのを防ぐことができる。FALSE の場合は、レンダリング ステート D3DRS_ZFUNC (深度バッファリングが行われていると仮定) に従って深度比較が実行されるが、深度値はバッファに書き込まれない。
D3DRS_ALPHATESTENABLE
アルファ テストを可能にするには、TRUE を設定する。デフォルト値は FALSE である。このメンバを使用すると、アルファ値に基づいてピクセルを受け取るか拒否するかを判断するテストをオフにできる。

入ってくるアルファ値は、D3DRS_ALPHAFUNC レンダリング ステートにより提供される比較関数を用いて参照アルファ値と比較される。このモードが可能になると、テストが成功した場合に限り、アルファ ブレンディングが起きる。

D3DRS_LASTPIXEL
直線や三角形の最後のピクセルを描画可能にするには、FALSE を設定する。デフォルト値は TRUE である。
D3DRS_SRCBLEND
D3DBLEND 列挙型のメンバのいずれかである。デフォルト値は D3DBLEND_ONE である。
D3DRS_DESTBLEND
D3DBLEND 列挙型のメンバのいずれかである。デフォルト値は D3DBLEND_ZERO である。
D3DRS_CULLMODE
背面の三角形をカリングする場合に、その方法を指定する。D3DCULL 列挙型のメンバのいずれかを設定できる。デフォルト値は D3DCULL_CCW である。
D3DRS_ZFUNC
D3DCMPFUNC 列挙型のメンバのいずれかである。デフォルト値は D3DCMP_LESSEQUAL である。このメンバは、アプリケーションにカメラからの距離を基準とするピクセルの受け取りや受け取り拒否を許可する。

ピクセルの深度値を深度バッファの値と比較する。ピクセルの深度値が比較関数で許可された場合にピクセルが書き込まれる。

深度値が深度バッファに書き込まれるのは、レンダリング ステートが TRUE の場合だけである。

この深度テストに失敗した方が、ソフトウェアによるラスタ化や多くのハードウェア アクセラレータの処理は速くなる。これは、ピクセルのレンダリング処理を行わない場合に、テクスチャをフィルタ処理したり乗算したりする必要がなくなるためである。

D3DRS_ALPHAREF
アルファ テストが有効に設定されている場合に、ピクセルをテストするための基準アルファ値を指定する値。これは、DWORD レンダリング ステート値の下位 8 ビットにあたる 8 ビット値である。値は 0x00000000 から 0x000000FF の範囲内である。
D3DRS_ALPHAFUNC
D3DCMPFUNC 列挙型のメンバのいずれかである。デフォルト値は、D3DCMP_ALWAYS である。このメンバは、アプリケーションにアルファ値を基準とするピクセルの受け取りや受け取り拒否を許可する。
D3DRS_DITHERENABLE
ディザリングを可能にするには、TRUE を設定する。デフォルト値は FALSE である。
D3DRS_ALPHABLENDENABLE
アルファ ブレンドによる透明化を有効にするには、TRUE を設定する。デフォルト値は FALSE である。

アルファ ブレンディングのタイプは、D3DRS_SRCBLEND と D3DRS_DESTBLEND のレンダリング ステートによって決定される。

アプリケーションでは D3DCAPS8 構造体の DevCaps メンバの D3DDEVCAPS_DRAWPRIMTLVERTEX フラグを調べて、このレンダリング ステートがサポートされているかどうかをチェックする。

D3DRS_FOGENABLE
フォグ ブレンディングを可能にするには、TRUE を設定する。デフォルト値は FALSE である。フォグ ブレンディングの詳細については、「フォグ」を参照すること。
D3DRS_SPECULARENABLE
スペキュラ ハイライトを可能にするには、TRUE を設定する。デフォルト値は FALSE である。

スペキュラ ハイライトは、光の当たっているオブジェクトの各頂点がそのオブジェクトの原点にあるかのように算出される。これによって、オブジェクトが原点の周囲でモデル化され、光源とオブジェクト間の距離が比較的大きい場合に限り、結果を予測することができる。それ以外の場合は、結果は不定である。

このメンバを TRUE に設定すると、テクスチャ カスケード後、アルファ ブレンディング前に、ベース カラーにスペキュラ色が追加される。

D3DRS_ZVISIBLE
サポートされない。
D3DRS_FOGCOLOR
D3DCOLOR 型の値。デフォルト値は 0 である。フォグ カラーの詳細については、「フォグ カラー」を参照すること。
D3DRS_FOGTABLEMODE
ピクセル フォグに使用されるフォグ式。D3DFOGMODE 列挙型のメンバのいずれかを設定する。デフォルト値は D3DFOG_NONE である。ピクセル フォグの詳細については、「ピクセル フォグ」を参照すること。
D3DRS_FOGSTART
線形フォグ モードにおける、ピクセルまたは頂点フォグ エフェクトの開始深度。頂点フォグの場合、深度はワールド空間で指定される。ピクセル フォグの場合は、デバイス空間 [0.0, 1.0] またはワールド空間のいずれかで指定される。ピクセル フォグでは、フォグ計算に Z が使用される場合、これらの値はデバイス空間にあり、視点との相対フォグ (W フォグ) が使用される場合はワールド空間にある。詳細については、「フォグ パラメータ」および「視点からの相対深度 対 Z ベースの深度」を参照すること。

このレンダリング ステートの値は浮動小数点値である。IDirect3DDevice8::SetRenderState メソッドは DWORD 値を使用するため、次のコードに示すように、アプリケーションでは値を格納した変数をキャストしなければならない。

pd3dDevice8->SetRenderState(D3DRS_TWEENFACTOR, *((DWORD*)&TweenFactor));
D3DRS_FOGEND
線形フォグ モードにおける、ピクセルまたは頂点フォグ エフェクトの終了深度。頂点フォグの場合、深度はワールド空間で指定される。ピクセル フォグの場合は、デバイス空間 [0.0, 1.0] またはワールド空間のいずれかで指定される。ピクセル フォグでは、フォグ計算に Z が使用される場合、これらの値はデバイス空間にあり、視点との相対フォグ (W フォグ) が使用される場合はワールド空間にある。詳細については、「フォグ パラメータ」および「視点からの相対深度 対 Z ベースの深度」を参照すること。

このレンダリング ステートの値は浮動小数点値である。IDirect3DDevice8::SetRenderState メソッドは DWORD 値を使用するため、次のコードに示すように、アプリケーションでは値を格納した変数をキャストしなければならない。

pd3dDevice8->SetRenderState(D3DRS_FOGEND, *((DWORD*) (&fFogEnd)));
D3DRS_FOGDENSITY
指数フォグ モード (D3DFOG_EXP および D3DFOG_EXP2) で使用するピクセルまたは頂点フォグのフォグ密度。有効な密度は 0.0 から 1.0 の範囲内である。デフォルト値は 1.0 である。詳細については、「フォグ パラメータ」を参照すること。

このレンダリング ステートの値は浮動小数点値である。IDirect3DDevice8::SetRenderState メソッドは DWORD 値を使用するため、次のコードに示すように、アプリケーションでは値を格納した変数をキャストしなければならない。

pd3dDevice8->SetRenderState(D3DRS_FOGDENSITY, *((DWORD*) (&fFogDensity)));
D3DRS_EDGEANTIALIAS
オブジェクトの凸面の輪郭を形成する線をアンチエイリアスするには、TRUE を設定する。デフォルト値は FALSE である。TRUE の場合、レンダリングの対象となるのは線のみで、シーン内のポリゴンの外側エッジに限定される。このレンダリング ステートが設定されていて、三角形または点が描画されると、その動作は不定である。アンチエイリアシングは、隣接ピクセルの値の平均値を取ることによって実行される。アンチエイリアシングを行うのは最良のやり方ではないが、効率的ではある。この種の処理をサポートするハードウェアは普及しつつある。

エッジ アンチエイリアシングは、D3DPRASTERCAPS_ANTIALIASEDGES 能力を公開するデバイスに限り、有効にすることができる。エッジ アンチエイリアシングの詳細については、「エッジ アンチエイリアシング」および「アンチエイリアシング ステート」を参照すること。

D3DRS_ZBIAS
物理的には同一面上にあるポリゴンが別々に存在するように見せる、0 から 16 までの範囲の整数値。Z バイアス値が高いポリゴンは、Z バイアス値が低いポリゴンより手前に表示されるため、描画順序を決めるソートを実行する必要はない。たとえば、値 1 を持つポリゴンは、値 0 のポリゴンよりも手前に見える。デフォルト値は 0 である。詳細については、「深度バッファの使い方」を参照すること。
D3DRS_RANGEFOGENABLE
範囲ベースの頂点フォグを有効にするには、TRUE を設定する。デフォルト値は FALSE である。この場合は深度ベースのフォグが使用される。範囲ベースのフォグでは、シーンにおけるオブジェクトの深さ (z 座標) ではなく、ビューアからのオブジェクトの距離でフォグ エフェクトを計算する。範囲ベースのフォグでは、通常のすべてのフォグ メソッドが機能するが、深度ではなく範囲を使って計算を行う点だけが異なる。

範囲はフォグ計算に使用する適切な要素であるが、範囲は計算の点で負荷が高く、深度は通常計算済みなので、代わりに深度が広く使われる。深度を使用してフォグを計算すると、周辺オブジェクトのフォグ エフェクトが視点の移動と共に変化するという好ましくない影響が出る。この場合、深度は変化するが範囲は一定のままである。

現在のところ、ピクセル単位の範囲ベースのフォグをサポートするハードウェアは存在しないため、範囲補正は頂点フォグでのみ行われる。

詳細については、「範囲ベースのフォグ」および「頂点フォグ」を参照すること。

D3DRS_STENCILENABLE
ステンシル処理を可能にするには TRUE、無効にするには FALSE を設定する。デフォルト値は FALSE である。

詳細については、「ステンシル バッファ」を参照すること。

D3DRS_STENCILFAIL
ステンシル テストに失敗したときに実行するステンシル処理。これには D3DSTENCILOP 列挙型のメンバのいずれかを設定できる。デフォルト値は D3DSTENCILOP_KEEP である。

詳細については、「ステンシル バッファ」を参照すること。

D3DRS_STENCILZFAIL
ステンシル テストにパスし、深度テスト (Z テスト) に失敗した場合に実行するステンシル処理。これには D3DSTENCILOP 列挙型のメンバのいずれかを設定できる。デフォルト値は D3DSTENCILOP_KEEP である。
D3DRS_STENCILPASS
ステンシル テストおよび深度 (Z) テストの両方にパスした場合に実行するステンシル処理。これには D3DSTENCILOP 列挙型のメンバのいずれかを設定できる。デフォルト値は D3DSTENCILOP_KEEP である。
D3DRS_STENCILFUNC
ステンシル テストのための比較関数。これには D3DCMPFUNC 列挙型のメンバのいずれかを設定できる。デフォルト値は、D3DCMP_ALWAYS である。

比較関数は、ステンシル バッファの要素を基準値と比較するために使われる。この比較は、基準値のビットと、ステンシル マスク (D3DRS_STENCILMASK レンダリング ステートにより設定) に設定されたステンシル バッファ要素にのみ適用される。TRUE の場合は、ステンシル テストにパスする。

D3DRS_STENCILREF
ステンシル テストのための整数基準値。デフォルト値は 0 である。
D3DRS_STENCILMASK
基準値と、それぞれのステンシル バッファ要素に適用し、ステンシル テストのための有効ビットを決定するマスク。デフォルト マスクは 0xFFFFFFFF である。
D3DRS_STENCILWRITEMASK
ステンシル バッファに書き込む値に適用する書き込みマスク。デフォルト マスクは 0xFFFFFFFF である。
D3DRS_TEXTUREFACTOR
D3DTA_TFACTOR テクスチャ ブレンディング引数、または D3DTOP_BLENDFACTORALPHA テクスチャ ブレンディング処理を用いたマルチテクスチャ ブレンディングで使用される色。関連する値は D3DCOLOR 変数である。
D3DRS_WRAP0 〜 D3DRS_WRAP7
複数のテクスチャ座標セットに対するテクスチャラッピング動作。これらのレンダリング ステートの有効値として、D3DWRAPCOORD_0 (または D3DWRAP_U)、D3DWRAPCOORD_1 (または D3DWRAP_V)、D3DWRAPCOORD_2 (または D3DWRAP_W)、および D3DWRAPCOORD_3 の各フラグを組み合わせることができる。これらの値を設定すると、指定されたテクスチャに対して 1、2、3、および 4 次元方向 (s、t、r、および q 方向と呼ばれる場合もある) のラッピングが実行される。これらのレンダリング ステートのデフォルト値は 0 である (全方向のラッピングが無効)。
D3DRS_CLIPPING
Microsoft® Direct3D® によるプリミティブのクリッピングを有効にするには TRUE、無効にするには FALSE を設定する。デフォルト値は TRUE である。
D3DRS_LIGHTING
Direct3D のライティングを有効にするには TRUE、無効にするには FALSE を設定する。デフォルト値は TRUE である。頂点法線を含む頂点のみ正しくライトが当てられ、法線を含まない頂点ではすべてのライティング計算で 0 の内積が使用される。
D3DRS_AMBIENT
アンビエント ライトの色。この値は D3DCOLOR 型である。デフォルト値は 0 である。
D3DRS_FOGVERTEXMODE
頂点フォグ用のフォグ式。D3DFOGMODE 列挙型のメンバのいずれかを設定する。デフォルト値は D3DFOG_NONE である。
D3DRS_COLORVERTEX
頂点単位のカラーを有効にするには TRUE、無効にするには FALSE を設定する。デフォルト値は TRUE である。頂点単位のカラーを有効にすると、個々の頂点に定義された色がライティング計算に含まれるようになる。

詳細については、以下のレンダリング ステートを参照すること。

D3DRS_LOCALVIEWER
カメラとの相対角度に依存したスペキュラ ハイライトを有効にするには、TRUE を設定する。直行スペキュラ ハイライトを使用するには、FALSE を設定する。デフォルト値は TRUE である。正射影を使用するアプリケーションでは FALSE を設定すること。
D3DRS_NORMALIZENORMALS
頂点法線の自動正規化を有効にするには TRUE、無効にするには FALSE を設定する。デフォルト値は FALSE である。この機能を有効にすると、頂点がカメラ空間にトランスフォームされた後で頂点法線が正規化されるが、計算負荷が大きい。
D3DRS_DIFFUSEMATERIALSOURCE
ライティング計算に使用されるディフューズ色のソース。有効値は、D3DMATERIALCOLORSOURCE 列挙型のメンバである。デフォルト値は D3DMCS_COLOR1 である。このレンダリング ステートの値が使用されるのは、D3DRS_COLORVERTEX レンダリング ステートが TRUE に設定されている場合だけである。
D3DRS_SPECULARMATERIALSOURCE
ライティング計算に使用されるスペキュラ色のソース。有効値は、D3DMATERIALCOLORSOURCE 列挙型のメンバである。デフォルト値は D3DMCS_COLOR2 である。
D3DRS_AMBIENTMATERIALSOURCE
ライティング計算に使用されるアンビエント色のソース。有効値は、D3DMATERIALCOLORSOURCE 列挙型のメンバである。デフォルト値は D3DMCS_COLOR2 である。
D3DRS_EMISSIVEMATERIALSOURCE
ライティング計算に使用されるエミッション色のソース。有効値は、D3DMATERIALCOLORSOURCE 列挙型のメンバである。デフォルト値は D3DMCS_MATERIAL である。
D3DRS_VERTEXBLEND
ジオメトリがある場合、ジオメトリ ブレンディングを実行するために使用する行列の個数。有効値は D3DVERTEXBLENDFLAGS 列挙型のメンバである。デフォルト値は D3DVBF_DISABLE である。
D3DRS_CLIPPLANEENABLE
ユーザー定義クリップ面を有効または無効にする。有効値は、各ビットのステータス (設定の有無) によって対応するユーザー定義クリップ面をアクティブにするステートを切り替える、任意の DWORD である。最下位ビット (ビット 0) はインデックス 0 の最初のクリップ面を制御し、後続ビットはそれより上位のインデックスのクリップ面をアクティブにすることを制御する。ビットが設定されている場合、シーンのレンダリング中に適切なクリップ面が適用される。デフォルト値は 0 である。

クリップ面を簡単に有効にできるよう、D3DCLIPPLANEn マクロが定義されている。

D3DRS_SOFTWAREVERTEXPROCESSING
ハードウェア頂点処理またはソフトウェア頂点処理の設定をアプリケーションから照会および選択できるようにする BOOL 値。デバイスの種類が D3DDEVTYPE_SW の場合、この値は TRUE の固定である。デバイスの種類が D3DDEVTYPE_REF の場合は、アプリケーションでこの値を設定できる。デバイスの種類が D3DDEVTYPE_HAL の場合は、D3DDEVCAPS_HWTRANSFORMANDLIGHT が設定されているときに限り、アプリケーションでこの値を設定できる。それ以外の場合、このフラグは TRUE に固定される。アプリケーションでの設定が可能な場合、デフォルト値は FALSE である。

両方の頂点処理が可能なモードにおいて、頂点処理のレンダリング ステートを変更すると、カレント ストリーム、インデックス、および頂点シェーダは、デフォルト値の NULL または 0 にリセットされる。

D3DRS_POINTSIZE
各頂点に対してポイント サイズが指定されていない場合に、ポイント サイズ計算で使用するサイズを指定する浮動小数点値。頂点がポイント サイズを含んでいる場合、この値は使用されない。この値は、D3DRS_POINTSCALEENABLE が FALSE の場合はスクリーン空間単位で指定する。それ以外の場合は、ワールド空間単位で指定する。デフォルト値は 1.0f である。この値の範囲は、0.0f 以上である。IDirect3DDevice8::SetRenderState メソッドは DWORD 値を使用するため、次のコードに示すように、アプリケーションでは値を格納した変数をキャストしなければならない。
pd3dDevice8->SetRenderState(D3DRS_PATCHSEGMENTS, *((DWORD*)&PointSize));
D3DRS_POINTSIZE_MIN
ポイント プリミティブの最小サイズを指定する浮動小数点値。レンダリングの間、ポイント プリミティブはこのサイズに固定される。1.0 より小さい値を設定すると、ポイントにピクセルの中心が含まれずにアンチエイリアシングが無効になっている場合はポイントが表示されなくなり、アンチエイリアシングが有効になっている場合は低い輝度でレンダリングされる。デフォルト値は 1.0f である。この値の範囲は、0.0f 以上である。IDirect3DDevice8::SetRenderState メソッドは DWORD 値を使用するため、次のコードに示すように、アプリケーションでは値を格納した変数をキャストしなければならない。
pd3dDevice8->SetRenderState(D3DRS_PATCHSEGMENTS, *((DWORD*)&PointSizeMin));
D3DRS_POINTSPRITEENABLE
BOOL 値。TRUE を設定すると、テクスチャ全体が各ポイントにマッピングされるように、ポイント プリミティブのテクスチャ座標が設定される。FALSE を設定すると、頂点のテクスチャ座標がポイント全体に対して使用される。デフォルト値は FALSE である。D3DRS_POINTSCALEENABLE に FALSE (デフォルト値) を設定し、D3DRS_POINTSIZE に 1.0 (デフォルト値) を設定することで、DirectX 7 スタイルのシングルピクセル ポイントを実現できる。
D3DRS_POINTSCALEENABLE
ポイント プリミティブに対するサイズの計算を制御する BOOL 値。TRUE を設定すると、ポイント サイズは、カメラ空間の値として解釈され、距離関数および視錐台によってビューポートの Y 軸のスケーリングになるように調整されて、最終的なスクリーン空間のポイント サイズが計算される。FALSE を設定すると、ポイント サイズはスクリーン空間の値と解釈されて、そのまま使われる。デフォルト値は FALSE である。
D3DRS_POINTSCALE_A
ポイント プリミティブに対する距離ベースのサイズの減衰を制御する浮動小数点値。D3DRS_POINTSCALEENABLE が TRUE の場合にのみ有効である。デフォルト値は 1.0f である。この値の範囲は、0.0f 以上である。IDirect3DDevice8::SetRenderState メソッドは DWORD 値を使用するため、次のコードに示すように、アプリケーションでは値を格納した変数をキャストしなければならない。
pd3dDevice8->SetRenderState(D3DRS_PATCHSEGMENTS, *((DWORD*)&PointScaleA));
D3DRS_POINTSCALE_B
ポイント プリミティブに対する距離ベースのサイズの減衰を制御する浮動小数点値。D3DRS_POINTSCALEENABLE が TRUE の場合のみ有効である。デフォルト値は 0.0f である。この値の範囲は、0.0f 以上である。IDirect3DDevice8::SetRenderState メソッドは DWORD 値を使用するため、次のコードに示すように、アプリケーションでは値を格納した変数をキャストしなければならない。
pd3dDevice8->SetRenderState(D3DRS_PATCHSEGMENTS, *((DWORD*)&PointScaleB));
D3DRS_POINTSCALE_C
ポイント プリミティブに対する距離ベースのサイズの減衰を制御する浮動小数点値。D3DRS_POINTSCALEENABLE が TRUE の場合のみ有効である。デフォルト値は 0.0f である。この値の範囲は、0.0f 以上である。IDirect3DDevice8::SetRenderState メソッドは DWORD 値を使用するため、次のコードに示すように、アプリケーションでは値を格納した変数をキャストしなければならない。
pd3dDevice8->SetRenderState(D3DRS_PATCHSEGMENTS, *((DWORD*)&PointScaleC));
D3DRS_MULTISAMPLEANTIALIAS
マルチサンプル レンダリングのターゲット バッファを使うときの、個々のサンプルの計算方法を決定する BOOL 値。TRUE を設定すると、複数サンプルのそれぞれについて異なるサンプリング位置でサンプリングすることでフルシーン アンチエイリアシングを実行するように、複数のサンプルが計算される。FALSE を設定すると、複数のサンプルはすべて同じサンプリング値 (ピクセルの中心でサンプリングされた値) で記述される。これにより、マルチサンプル バッファに対する非アンチエイリアシング レンダリングが可能になる。シングル サンプル バッファへのレンダリング時、このレンダリング ステートはエフェクトを持たない。デフォルト値は TRUE である。
D3DRS_MULTISAMPLEMASK
LSB を先頭とするこのマスクの各ビットは、マルチサンプル レンダリング ターゲットのサンプルの 1 つについての変更を制御する。したがって、8 サンプルのレンダリング ターゲットの場合は、8 つのサンプルのそれぞれに対する 8 つの書き込み許可情報が、下位バイトに格納されている。シングル サンプル バッファへのレンダリング時、このレンダリング ステートはエフェクトを持たない。デフォルト値は 0xFFFFFFFF である。

このレンダリング ステートを使うと、マルチサンプル バッファを蓄積バッファとして使い、各パスがサンプルのサブセットを更新するジオメトリのマルチパス レンダリングを行うことができる。

D3DRS_PATCHEDGESTYLE
パッチ エッジが浮動小数点数スタイルのテッセレーションを使用するかどうかを設定する。設定可能な値は、D3DPATCHEDGESTYLE 列挙型で定義される。
D3DRS_PATCHSEGMENTS
パッチを描画するときに、セグメント数を各エッジの浮動小数点数値として設定する。IDirect3DDevice8::SetRenderState メソッドは DWORD 値を使用するため、次のコードに示すように、アプリケーションでは値を格納した変数をキャストしなければならない。
pd3dDevice8->SetRenderState(D3DRS_PATCHSEGMENTS, *((DWORD*)&NumSegments));
D3DRS_DEBUGMONITORTOKEN
モニタをデバッグする場合にのみ設定する。設定可能な値は、D3DDEBUGMONITORTOKENS 列挙型で定義される。D3DRS_DEBUGMONITORTOKEN が設定されている場合、この呼び出しはデバッグ モニタへのトークンの受け渡しとして処理されることに注意すること。たとえば、D3DDMT_ENABLE または D3DDMT_DISABLE を D3DRS_DEBUGMONITORTOKEN に渡した後、ほかのトークンの値が渡された場合、デバッグ モニタのステート (有効または無効) は変化しない。

このステートは、デバッグ ビルドでのみ有用である。デバッグ モニタのデフォルトは D3DDMT_ENABLE である。

D3DRS_POINTSIZE_MAX
ポイント スプライトが制限される最大サイズを指定する浮動小数点数値。値は、D3DCAPS8MaxPointSize メンバ以下で、D3DRS_POINTSIZE_MIN 以上でなければならない。IDirect3DDevice8::SetRenderState メソッドは DWORD 値を使用するため、次のコードに示すように、アプリケーションでは値を格納した変数をキャストしなければならない。
pd3dDevice8->SetRenderState(D3DRS_PONTSIZE_MAX, *((DWORD*)&PointSizeMax));
D3DRS_INDEXEDVERTEXBLENDENABLE
インデックス付きの頂点ブレンディングを有効または無効にする BOOL 値。TRUE を設定すると、インデックス付き頂点ブレンディングが有効になる。FALSE を設定すると、インデックス付き頂点ブレンディングは無効になる。このレンダリング ステートを有効にする場合は、頂点ごとにパック DWORD で行列インデックスを渡さなければならない。このレンダリング ステートを無効にし、D3DRS_VERTEXBLEND ステートを使って頂点ブレンディングを有効にするのは、すべての頂点について行列インデックス 0, 1, 2, 3 を指定することと等しい。
D3DRS_COLORWRITEENABLE
レンダリング ターゲットのカラー バッファに対するチャネルごとの書き込みを有効にする UINT 値。ビットを設定すると、3D レンダリングの間にカラー チャネルが更新される。ビットをクリアすると、カラー チャネルは更新されない。デバイスに対する D3DCAPS8 構造体の PrimitiveMiscCaps メンバで D3DPMISCCAPS_COLORWRITEENABLE 能力ビットを設定すると、この機能を利用できるようになる。このレンダリング ステートは、クリア処理には影響を与えない。デフォルト値は 0x0000000F である。

このレンダリング ステートに対する有効な値は、D3DCOLORWRITEENABLE_ALPHA、D3DCOLORWRITEENABLE_BLUE、D3DCOLORWRITEENABLE_GREEN、および D3DCOLORWRITEENABLE_RED の各フラグの任意の組み合わせである。

D3DRS_TWEENFACTOR
トゥイーン係数を制御する浮動小数点数値。IDirect3DDevice8::SetRenderState メソッドは DWORD 値を使用するため、次のコードに示すように、アプリケーションでは値を格納した変数をキャストしなければならない。
pd3dDevice8->SetRenderState(D3DRS_PATCHSEGMENTS, *((DWORD*)&TweenFactor));
D3DRS_BLENDOP
アルファ ブレンディング レンダリング ステート D3DRS_ALPHABLENDENABLE が TRUE に設定されているときに適用される算術演算を選択するために使用する値。有効値は、D3DBLENDOP 列挙型で定義される。デフォルト値は D3DBLENDOP_ADD である。

D3DPMISCCAPS_BLENDOP デバイス能力がサポートされていない場合は、D3DBLENDOP_ADD が実行される。

D3DRS_FORCE_DWORD
この列挙型を強制的に 32 ビット サイズにコンパイルする。この値は使用されていない。

注意

Direct3D は、アプリケーションでの便宜を考慮して、(D3DRS_WRAPn ステート値の 1 つを明示的に使用する代わりに) 定数 D3DRENDERSTATE_WRAPBIAS を定義し、テクスチャ座標セットのゼロから始まる整数値に基づいて、テクスチャ ラッピングを有効にしたり、無効にしたりする。次の例のように、D3DRENDERSTATE_WRAPBIAS 値をテクスチャ座標セットのゼロ始点インデックスに加算して、そのインデックスに対応する D3DRS_WRAPn 値を計算する。

// 変数 dwIndex のインデックスに対応するテクスチャ座標セットを
// 使用するテクスチャに対して、U/V ラッピングを有効にする。
HRESULT hr = pd3dDevice->SetRenderState(
    dwIndex + D3DRENDERSTATE_WRAPBIAS,  
    D3DWRAPCOORD_0 | D3DWRAPCOORD_1);
 
// dwIndexが 3 の場合、加算の結果の値は、
// D3DRS_WRAP3 (131) に等しくなる。

動作環境

  ヘッダー : D3d8types.h で宣言。

参照

IDirect3DDevice8::GetRenderStateIDirect3DDevice8::SetRenderState