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
- ポイント スプライトが制限される最大サイズを指定する浮動小数点数値。値は、D3DCAPS8 の MaxPointSize メンバ以下で、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::GetRenderState、IDirect3DDevice8::SetRenderState