D3DRENDERSTATETYPE

レンダリング ステートは、すべての種類の頂点およびピクセル処理のセットアップ状態を定義します。レンダリング ステートの中には、頂点処理をセットアップするものも、ピクセル処理をセットアップするものもあります (「レンダリング ステート (Direct3D 9)」を参照)。レンダリング ステートは、状態ブロックを使用して、保存および復元することができます (「ステート ブロックによるステートの保存と復元 (Direct3D 9)」を参照)。

typedef enum D3DRENDERSTATETYPE
{
    D3DRS_ZENABLE = 7,
    D3DRS_FILLMODE = 8,
    D3DRS_SHADEMODE = 9,
    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_FOGCOLOR = 34,
    D3DRS_FOGTABLEMODE = 35,
    D3DRS_FOGSTART = 36,
    D3DRS_FOGEND = 37,
    D3DRS_FOGDENSITY = 38,
    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_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_DEBUGMONITORTOKEN = 165,
    D3DRS_POINTSIZE_MAX = 166,
    D3DRS_INDEXEDVERTEXBLENDENABLE = 167,
    D3DRS_COLORWRITEENABLE = 168,
    D3DRS_TWEENFACTOR = 170,
    D3DRS_BLENDOP = 171,
    D3DRS_POSITIONDEGREE = 172,
    D3DRS_NORMALDEGREE = 173,
    D3DRS_SCISSORTESTENABLE = 174,
    D3DRS_SLOPESCALEDEPTHBIAS = 175,
    D3DRS_ANTIALIASEDLINEENABLE = 176,
    D3DRS_MINTESSELLATIONLEVEL = 178,
    D3DRS_MAXTESSELLATIONLEVEL = 179,
    D3DRS_ADAPTIVETESS_X = 180,
    D3DRS_ADAPTIVETESS_Y = 181,
    D3DRS_ADAPTIVETESS_Z = 182,
    D3DRS_ADAPTIVETESS_W = 183,
    D3DRS_ENABLEADAPTIVETESSELLATION = 184,
    D3DRS_TWOSIDEDSTENCILMODE = 185,
    D3DRS_CCW_STENCILFAIL = 186,
    D3DRS_CCW_STENCILZFAIL = 187,
    D3DRS_CCW_STENCILPASS = 188,
    D3DRS_CCW_STENCILFUNC = 189,
    D3DRS_COLORWRITEENABLE1 = 190,
    D3DRS_COLORWRITEENABLE2 = 191,
    D3DRS_COLORWRITEENABLE3 = 192,
    D3DRS_BLENDFACTOR = 193,
    D3DRS_SRGBWRITEENABLE = 194,
    D3DRS_DEPTHBIAS = 195,
    D3DRS_WRAP8 = 198,
    D3DRS_WRAP9 = 199,
    D3DRS_WRAP10 = 200,
    D3DRS_WRAP11 = 201,
    D3DRS_WRAP12 = 202,
    D3DRS_WRAP13 = 203,
    D3DRS_WRAP14 = 204,
    D3DRS_WRAP15 = 205,
    D3DRS_SEPARATEALPHABLENDENABLE = 206,
    D3DRS_SRCBLENDALPHA = 207,
    D3DRS_DESTBLENDALPHA = 208,
    D3DRS_BLENDOPALPHA = 209,
    D3DRS_FORCE_DWORD = 0x7fffffff,
} D3DRENDERSTATETYPE, *LPD3DRENDERSTATETYPE;

定数

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

    このレンダリング ステートの既定値は、D3DPRESENT_PARAMETERS 構造体の EnableAutoDepthStencil メンバーを TRUE に設定することによって深度ステンシルがスワップ チェーンと共に作成されている場合は D3DZB_TRUE、その他の場合は D3DZB_FALSE です。

  • D3DRS_FILLMODE
    D3DFILLMODE 列挙型の 1 つまたは複数のメンバーです。デフォルト値は D3DFILL_SOLID です。

  • D3DRS_SHADEMODE
    D3DSHADEMODE 列挙型の 1 つまたは複数のメンバーです。デフォルト値は D3DSHADE_GOURAUD です。

  • D3DRS_ZWRITEENABLE
    アプリケーションによる深度バッファーへの書き込みを有効にするには、TRUE を設定します。デフォルト値は TRUE です。このメンバーを利用することにより、システムが新しい深度値で深度バッファーを更新してしまうのをアプリケーション側から防ぐことができます。FALSE の場合は、深度バッファリングが行われていると見なされ、レンダリング ステート D3DRS_ZFUNC に従って深度が比較されますが、深度値はバッファーに書き込まれません。

  • D3DRS_ALPHATESTENABLE
    ピクセルごとのアルファ テストを有効にするには、TRUE を設定します。テストにパスした場合は、ピクセルはフレーム バッファーによって処理されます。パスしなかった場合は、該当ピクセルに対してすべてのフレーム バッファー処理がスキップされます。

    このテストでは、D3DRS_ALPHAFUNC レンダリング ステートにより提供される比較関数を用いて、入力アルファ値と基準アルファ値が比較されます。基準アルファ値は、D3DRS_ALPHAREF に設定されている値で決まります。詳細については、「アルファ テスト ステート (Direct3D 9)」を参照してください。

    このパラメーターのデフォルト値は FALSE です。

  • D3DRS_LASTPIXEL
    既定値は TRUE であり、その場合は線の最後のピクセルの描画が有効になります。最後のピクセルを描画しない場合は、この値に FALSE を設定します。詳細については、「輪郭線および塗りつぶしステート (Direct3D 9)」を参照してください。

  • 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 ビットの値です。値は 0x00000000 から 0x000000FF までの範囲内です。既定値は 0 です。

  • D3DRS_ALPHAFUNC
    D3DCMPFUNC 列挙型のいずれかのメンバーです。デフォルト値は D3DCMP_ALWAYS です。このメンバーを使用すると、アプリケーションはそのアルファ値を基準にしてピクセルを受け入れたり、拒否したりできます。

  • D3DRS_DITHERENABLE
    ディザリングを有効にするには、TRUE を設定します。デフォルト値は FALSE です。

  • D3DRS_ALPHABLENDENABLE
    アルファ ブレンディングによる透明化を可能にするには、TRUE を設定します。デフォルト値は FALSE です。

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

  • D3DRS_FOGENABLE
    フォグ ブレンディングを有効にするには、TRUE を設定します。デフォルト値は FALSE です。フォグ ブレンディングの使用方法の詳細については、「フォグ」を参照してください。

  • D3DRS_SPECULARENABLE
    スペキュラ ハイライトを有効にするには、TRUE を設定します。デフォルト値は FALSE です。

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

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

  • D3DRS_FOGCOLOR
    D3DCOLOR 型の値です。既定値は 0 です。フォグ カラーの詳細については、「フォグ カラー (Direct3D 9)」を参照してください。

  • D3DRS_FOGTABLEMODE
    ピクセル フォグに使用されるフォグ数式です。この値には、D3DFOGMODE 列挙型のいずれかのメンバーを設定できます。既定値は D3DFOG_NONE です。ピクセル フォグの詳細については、「ピクセル フォグ (Direct3D 9)」を参照してください。

  • D3DRS_FOGSTART
    線形フォグ モードでピクセル フォグまたは頂点フォグのエフェクトが始まる深度です。デフォルト値は 0.0f です。深度は、頂点フォグの場合はワールド空間で指定し、ピクセル フォグの場合はデバイス空間 [0.0, 1.0] またはワールド空間で指定します。ピクセル フォグの場合、これらの値は、フォグ計算に z が使用されるときはデバイス空間内、視点との相対フォグ (w フォグ) が使用されるときはワールド空間内になります。詳細については、「フォグ パラメーター (Direct3D 9)」および「視点からの相対深度と Z ベースの深度」を参照してください。

    このレンダリング ステートの値は、浮動小数点値です。IDirect3DDevice9::SetRenderState メソッドは DWORD 値を受け入れるので、ユーザー アプリケーションではこの値が含まれる変数を、次のコード例のようにキャストする必要があります。

    pDevice9->SetRenderState(D3DRS_FOGSTART,                           *((DWORD*) (&fFogStart)));
    
  • D3DRS_FOGEND
    線形フォグ モードでピクセル フォグまたは頂点フォグのエフェクトが終わる深度です。既定値は 1.0f です。深度は、頂点フォグの場合はワールド空間で指定し、ピクセル フォグの場合はデバイス空間 [0.0, 1.0] またはワールド空間で指定します。ピクセル フォグの場合、これらの値は、フォグ計算に z が使用されるときはデバイス空間内、視点との相対フォグ (w フォグ) が使用されるときはワールド空間内になります。詳細については、「フォグ パラメーター (Direct3D 9)」および「視点からの相対深度と Z ベースの深度」を参照してください。

    このレンダリング ステートの値は、浮動小数点値です。IDirect3DDevice9::SetRenderState メソッドは DWORD 値を受け入れるので、ユーザー アプリケーションではこの値が含まれる変数を、次のコード例のようにキャストする必要があります。

    m_pDevice9->SetRenderState(D3DRS_FOGEND, *((DWORD*) (&fFogEnd)));
    
  • D3DRS_FOGDENSITY
    指数フォグ モード (D3DFOG_EXP および D3DFOG_EXP2) で使用されるピクセル フォグまたは頂点フォグのフォグ密度。有効な密度の値の範囲は 0.0 ~ 1.0 です。既定値は 1.0 です。詳細については、「フォグ パラメーター (Direct3D 9)」を参照してください。

    このレンダリング ステートの値は、浮動小数点値です。IDirect3DDevice9::SetRenderState メソッドは DWORD 値を受け入れるので、ユーザー アプリケーションではこの値が含まれる変数を、次のコード例のようにキャストする必要があります。

    m_pDevice9->SetRenderState(D3DRS_FOGDENSITY, *((DWORD*) (&fFogDensity))); 
    
  • D3DRS_RANGEFOGENABLE
    範囲ベースの頂点フォグを有効にするには、TRUE を設定します。既定値は FALSE であり、その場合は深度ベースのフォグが使用されます。範囲ベースのフォグでは、フォグ エフェクトを計算する際、シーンにおけるオブジェクトの深さ (z 座標) ではなくビューアーからのオブジェクトの距離が使用されます。範囲ベースのフォグの場合は、深度の代わりに範囲が計算に使用されるという点を除き、どのフォグ メソッドも通常と同じように機能します。

    範囲はフォグ計算に使用される適切なファクターですが、深度が代わりによく使用されるのは、範囲は計算に時間がかかりますが、深度は一般にすぐに利用できるからです。深度を使ったフォグの計算には、ビューアーの目の動きに従って周辺オブジェクトの曖昧さが変化する (今の場合は、範囲が一定で、深度が変化する) という望ましくない影響があります。

    ピクセル単位の範囲ベースのフォグをサポートしているハードウェアは現在ないので、範囲の補正は頂点フォグの場合にしかサポートされていません。

    詳細については、「頂点フォグ (Direct3D 9)」を参照してください。

  • D3DRS_STENCILENABLE
    ステンシル処理を可能にするには TRUE、無効にするには FALSE をそれぞれ設定します。デフォルト値は FALSE です。詳細については、「ステンシル バッファー テクニック (Direct3D 9)」を参照してください。

  • 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
    ステンシル テストの基準値となる int 値です。既定値は 0 です。

  • D3DRS_STENCILMASK
    基準値および各ステンシル バッファー要素に適用するマスクです。ステンシル テストで有効にするビットを決定します。デフォルト マスクは 0xFFFFFFFF です。

  • D3DRS_STENCILWRITEMASK
    ステンシル バッファーに書き込む値に適用される書き込みマスクです。デフォルト マスクは 0xFFFFFFFF です。

  • D3DRS_TEXTUREFACTOR
    D3DTA_TFACTOR テクスチャーブレンディング引数または D3DTOP_BLENDFACTORALPHA テクスチャーブレンディング処理と共に使用されるマルチテクスチャー ブレンディングのカラー。関連付けられる値は、D3DCOLOR 変数です。デフォルト値は不透明な白 (0xFFFFFFFF) です。

  • D3DRS_WRAP0
    複数のテクスチャー座標セットに関するテクスチャーラッピング動作です。このレンダリング ステートには、D3DWRAPCOORD_0 (または D3DWRAP_U)、D3DWRAPCOORD_1 (または D3DWRAP_V)、D3DWRAPCOORD_2 (または D3DWRAP_W)、および D3DWRAPCOORD_3 の各フラグを任意に組み合わせて設定できます。これらの値を設定すると、指定されたテクスチャーに応じて 1、2、3、および 4 次元方向 (s、t、r、および q 方向ともいいます) のラッピングが実行されます。このレンダリング ステートのデフォルト値は 0 (すべての方向でラッピングは無効) です。

  • D3DRS_WRAP1
    「D3DRS_WRAP0」を参照してください。

  • D3DRS_WRAP2
    「D3DRS_WRAP0」を参照してください。

  • D3DRS_WRAP3
    「D3DRS_WRAP0」を参照してください。

  • D3DRS_WRAP4
    「D3DRS_WRAP0」を参照してください。

  • D3DRS_WRAP5
    「D3DRS_WRAP0」を参照してください。

  • D3DRS_WRAP6
    「D3DRS_WRAP0」を参照してください。

  • D3DRS_WRAP7
    「D3DRS_WRAP0」を参照してください。

  • D3DRS_CLIPPING
    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_MATERIAL です。

  • D3DRS_EMISSIVEMATERIALSOURCE
    ライティング計算のエミッション カラー ソース。設定できる値は D3DMATERIALCOLORSOURCE 列挙型のメンバーです。既定値は D3DMCS_MATERIAL です。

  • D3DRS_VERTEXBLEND
    ジオメトリ ブレンディング (存在する場合) の実行に使用される行列の数。設定できる値は D3DVERTEXBLENDFLAGS 列挙型のメンバーです。デフォルト値は D3DVBF_DISABLE です。

  • D3DRS_CLIPPLANEENABLE
    ユーザー定義のクリップ面を有効または無効にします。有効な値は任意の DWORD 値で、その各ビットの状態 (設定されているかどうか) に応じて、対応するユーザー定義クリップ面のアクティブ ステートが切り替わります。最下位ビット (ビット 0) がインデックス 0 の最初のクリップ面に対応し、後続の各ビットは、それ以降の各インデックスのクリップ面に対応します。ビットが設定されている場合、シーンのレンダリング中に適切なクリップ面が適用されます。既定値は 0 です。

    クリップ面を有効にする設定を行いやすくするための方法として、D3DCLIPPLANEn マクロが定義されています。

  • D3DRS_POINTSIZE
    各頂点のポイント サイズが指定されていない場合に、ポイント サイズ計算で使用するサイズを指定するための float 値です。頂点がポイント サイズを含んでいる場合、この値は使用されません。D3DRS_POINTSCALEENABLE が FALSE の場合、この値は画面空間の単位で指定します。そうでない場合は、ワールド空間の単位で指定します。ドライバーから返される値が既定値になります。ドライバーから 0 または 1 が返された場合、既定値は 64 になり、ソフトウェアによるポイント サイズのエミュレーションが可能になります。IDirect3DDevice9::SetRenderState メソッドは DWORD 値を受け入れるので、ユーザー アプリケーションではこの値が含まれる変数を、次のコード例のようにキャストする必要があります。

     m_pDevice9->SetRenderState(D3DRS_POINTSIZE, *((DWORD*)&pointSize)); 
    
  • D3DRS_POINTSIZE_MIN
    ポイント プリミティブの最小サイズを指定する float 値です。レンダリングの間、ポイント プリミティブはこのサイズに固定されます。1.0 より小さい値を指定した状態で、ポイントがピクセル中心に含まれない場合、アンチエイリアシングが無効になっていると、ポイントが表示されなくなります。また、アンチエイリアシングが有効になっている場合は、低い輝度でレンダリングされることになります。既定値は 1.0f です。ここには、0.0f 以上を指定します。IDirect3DDevice9::SetRenderState メソッドは DWORD 値を受け入れるので、ユーザー アプリケーションではこの値が含まれる変数を、次のコード例のようにキャストする必要があります。

     m_pDevice9->SetRenderState(D3DRS_POINTSIZE_MIN, *((DWORD*)&pointSizeMin)); 
    
  • D3DRS_POINTSPRITEENABLE
    BOOL 値。TRUE に設定すると、すべてのテクスチャーが各ポイントにマッピングされるように、ポイント プリミティブのテクスチャー座標が設定されます。FALSE の場合は、ポイント全体で頂点テクスチャー座標が使用されます。デフォルト値は FALSE です。D3DRS_POINTSCALEENABLE に FALSE、D3DRS_POINTSIZE に 1.0 (いずれも既定値) を設定すると、DirectX 7 スタイルの 1 ピクセルのポイントを実現できます。

  • D3DRS_POINTSCALEENABLE
    ポイント プリミティブのサイズ計算を制御する BOOL 値。TRUE の場合、ポイント サイズはカメラ空間値として解釈され、距離関数および視錐台によってビューポートの y 軸のスケールに合わせて調整され、最終的な画面空間のポイント サイズが計算されます。FALSE の場合、ポイント サイズは画面空間として解釈され、そのまま使用されます。デフォルト値は FALSE です。

  • D3DRS_POINTSCALE_A
    ポイント プリミティブの距離ベースのサイズ減衰を制御する浮動小数点値です。D3DRS_POINTSCALEENABLE が TRUE の場合にのみアクティブです。既定値は 1.0f です。ここには、0.0f 以上を指定します。IDirect3DDevice9::SetRenderState メソッドは DWORD 値を受け入れるので、ユーザー アプリケーションではこの値が含まれる変数を、次のコード例のようにキャストする必要があります。

     m_pDevice9->SetRenderState(D3DRS_POINTSCALE_A, *((DWORD*)&pointScaleA)); 
    
  • D3DRS_POINTSCALE_B
    ポイント プリミティブの距離ベースのサイズ減衰を制御する浮動小数点値です。D3DRS_POINTSCALEENABLE が TRUE の場合にのみアクティブです。既定値は 0.0f です。ここには、0.0f 以上を指定します。IDirect3DDevice9::SetRenderState メソッドは DWORD 値を受け入れるので、ユーザー アプリケーションではこの値が含まれる変数を、次のコード例のようにキャストする必要があります。

     m_pDevice9->SetRenderState(D3DRS_POINTSCALE_B, *((DWORD*)&pointScaleB)); 
    
  • D3DRS_POINTSCALE_C
    ポイント プリミティブの距離ベースのサイズ減衰を制御する浮動小数点値です。D3DRS_POINTSCALEENABLE が TRUE の場合にのみアクティブです。既定値は 0.0f です。ここには、0.0f 以上を指定します。IDirect3DDevice9::SetRenderState メソッドは DWORD 値を受け入れるので、ユーザー アプリケーションではこの値が含まれる変数を、次のコード例のようにキャストする必要があります。

     m_pDevice9->SetRenderState(D3DRS_POINTSCALE_C, *((DWORD*)&pointScaleC)); 
    
  • D3DRS_MULTISAMPLEANTIALIAS
    マルチサンプル レンダリングのターゲット バッファーを使うときの、個々のサンプルの計算方法を指定する BOOL 値です。TRUE に設定すると、フルシーン アンチエイリアシングが実行されるように、複数のサンプルが計算されます。このアンチエイリアシングは、複数サンプルごとに異なる位置からサンプリングして実行されます。FALSE に設定すると、複数のサンプルはすべて同じサンプリング値 (ピクセルの中心でサンプリングされた値) で記述されます。これにより、マルチサンプリング バッファーに対して非アンチエイリアシング レンダリングを適用することができます。シングル サンプリング バッファーがレンダリングされている場合、このレンダリング ステートは何も影響しません。デフォルト値は TRUE です。

  • D3DRS_MULTISAMPLEMASK
    このマスク内の最下位ビット (LSB) から始まる各ビットは、マルチサンプル レンダー ターゲット内の各サンプルの変更を制御します。そのため、8 個のサンプルから構成されるレンダー ターゲットの場合、下位バイトには 8 個の各サンプルに対する 8 個の書き込み許可ビットが含まれます。シングル サンプリング バッファーがレンダリングされている場合、このレンダリング ステートは何も影響しません。デフォルト値は 0xFFFFFFFF です。

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

    マルチサンプルの数が n、有効サンプルの数が k である場合、イメージは k/n のインテンシティでレンダリングされます。各ピクセルの各成分 RGB は、k/n を係数に持ちます。

  • D3DRS_PATCHEDGESTYLE
    パッチ エッジが浮動小数点数スタイルのテセレーションを使うかどうかを設定します。設定可能な値は D3DPATCHEDGESTYLE 列挙型で定義します。既定値は D3DPATCHEDGE_DISCRETE です。

  • D3DRS_DEBUGMONITORTOKEN
    モニターをデバッグする場合にのみ設定します。設定可能な値は D3DDEBUGMONITORTOKENS 列挙型で定義します。D3DRS_DEBUGMONITORTOKEN が設定されている場合、この呼び出しはデバッグ モニターへのトークンの受け渡しとして処理されることに注意してください。たとえば、D3DDMT_ENABLE または D3DDMT_DISABLE を D3DRS_DEBUGMONITORTOKEN に渡した後、他のトークンの値が渡された場合、デバッグ モニターのステート (有効または無効) は変化しません。

    このステートは、デバッグ ビルドでのみ有用です。デバッグ モニターの既定値は D3DDMT_ENABLE です。

  • D3DRS_POINTSIZE_MAX
    ポイント スプライトを制限するときの最大サイズを指定する float 値です。値は D3DCAPS9 の MaxPointSize メンバー以下で、かつ D3DRS_POINTSIZE_MIN 以上でなければなりません。既定値は 64.0 です。IDirect3DDevice9::SetRenderState メソッドは DWORD 値を受け入れるので、ユーザー アプリケーションではこの値が含まれる変数を、次のコード例のようにキャストする必要があります。

     m_pDevice9->SetRenderState(D3DRS_PONTSIZE_MAX, *((DWORD*)&pointSizeMax)); 
    
  • D3DRS_INDEXEDVERTEXBLENDENABLE
    インデックス付き頂点ブレンディングの有効/無効を指定する BOOL 値です。デフォルト値は FALSE です。TRUE に設定すると、インデックス付き頂点ブレンディングが有効になります。FALSE に設定すると、インデックス付き頂点ブレンディングが無効になります。このレンダリング ステートが有効になっている場合は、頂点ごとにパック DWORD で行列インデックスを渡す必要があります。このレンダリング ステートを無効にし、D3DRS_VERTEXBLEND ステートを使用して頂点ブレンディングを有効にすることは、すべての頂点について行列インデックス 0、1、2、3 を指定することと同じです。

  • D3DRS_COLORWRITEENABLE
    レンダー ターゲットのカラー バッファーのチャンネルごとに書き込みを有効にする UINT 値です。ビットを設定すると、3D レンダリング処理時にカラー チャンネルが更新されます。ビットをクリアすると、カラー チャンネルは更新されません。この機能は、デバイスの D3DCAPS9 構造体の PrimitiveMiscCaps メンバーで D3DPMISCCAPS_COLORWRITEENABLE 能力ビットが設定されている場合に利用できます。このレンダリング ステートは、クリア処理には影響しません。デフォルト値は 0x0000000F です。

    このレンダリング ステートには、D3DCOLORWRITEENABLE_ALPHA、D3DCOLORWRITEENABLE_BLUE、D3DCOLORWRITEENABLE_GREEN、または D3DCOLORWRITEENABLE_RED の各フラグを任意に組み合わせて指定できます。

  • D3DRS_TWEENFACTOR
    トゥイーン係数を制御する float 値です。既定値は 0.0f です。IDirect3DDevice9::SetRenderState メソッドは DWORD 値を受け入れるので、ユーザー アプリケーションではこの値が含まれる変数を、次のコード例のようにキャストする必要があります。

     m_pDevice9->SetRenderState(D3DRS_TWEENFACTOR, *((DWORD*)&TweenFactor)); 
    
  • D3DRS_BLENDOP
    アルファ ブレンディングのレンダリング ステートである D3DRS_ALPHABLENDENABLE を TRUE に設定している場合に、適用する演算処理の選択に使う値です。有効な値は D3DBLENDOP 列挙型で定義します。デフォルト値は D3DBLENDOP_ADD です。

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

  • D3DRS_POSITIONDEGREE
    N パッチ位置の補間次数です。この値には、D3DDEGREE_CUBIC (既定値) または D3DDEGREE_LINEAR を設定できます。詳細については、「D3DDEGREETYPE」を参照してください。

  • D3DRS_NORMALDEGREE
    N パッチ法線の補間次数です。この値には、D3DDEGREE_LINEAR (既定値) または D3DDEGREE_QUADRATIC を設定できます。詳細については、「D3DDEGREETYPE」を参照してください。

  • D3DRS_SCISSORTESTENABLE
    シザー テストを有効にするには TRUE、無効にするには FALSE をそれぞれ設定します。デフォルト値は FALSE です。

  • D3DRS_SLOPESCALEDEPTHBIAS
    z ファイティングを減らすために、同一平面のプリミティブにどれだけのバイアスを適用できるかを定めるために使用します。既定値は 0 です。

    bias = (max * D3DRS_SLOPESCALEDEPTHBIAS) + D3DRS_DEPTHBIAS.

    ここで max は、レンダリングする三角形の最大深度勾配です。

  • D3DRS_ANTIALIASEDLINEENABLE
    線のアンチエイリアシングを有効にするには TRUE、無効にするには FALSE を設定します。デフォルト値は FALSE です。

    マルチサンプル レンダー ターゲットをレンダリングする場合は、D3DRS_ANTIALIASEDLINEENABLE が無視され、すべての線がぎざぎざにレンダリングされます。マルチサンプル レンダー ターゲットで線のアンチエイリアシング レンダリングを有効にするには、ID3DXLine を使用します。

  • D3DRS_MINTESSELLATIONLEVEL
    テッセレーションの最小レベル。既定値は 1.0f です。「テッセレーション (Direct3D 9)」を参照してください。

  • D3DRS_MAXTESSELLATIONLEVEL
    テッセレーションの最大レベル。既定値は 1.0f です。「テッセレーション (Direct3D 9)」を参照してください。

  • D3DRS_ADAPTIVETESS_X
    適応型テセレーションの量 (x 軸方向)。既定値は 0.0f です。「適応型テッセレーション」を参照してください。

  • D3DRS_ADAPTIVETESS_Y
    適応型テセレーションの量 (y 軸方向)。既定値は 0.0f です。「Adaptive_Tessellation」を参照してください。

  • D3DRS_ADAPTIVETESS_Z
    適応型テセレーションの量 (z 軸方向)。既定値は 1f です。「Adaptive_Tessellation」を参照してください。

  • D3DRS_ADAPTIVETESS_W
    適応型テセレーションの量 (w 軸方向)。既定値は 0.0f です。「Adaptive_Tessellation」を参照してください。

  • D3DRS_ENABLEADAPTIVETESSELLATION
    適応型テセレーションを有効にするには TRUE、無効にするには FALSE を指定します。デフォルト値は FALSE です。「Adaptive_Tessellation」を参照してください。

  • D3DRS_TWOSIDEDSTENCILMODE
    2 面ステンシルを有効にするには TRUE、無効にするには FALSE をそれぞれ設定します。デフォルト値は FALSE です。2 面ステンシル モードを有効にするには、アプリケーションで D3DRS_CULLMODE を D3DCULL_NONE に設定する必要があります。三角形のワインディング順序が時計回りの場合には、D3DRS_STENCIL* 演算が使用されます。三角形のワインディング順序が反時計回りの場合には、D3DRS_CCW_STENCIL* 演算が使用されます。

    2 面ステンシルがサポートされているかどうかを確認するには、D3DCAPS9 の StencilCaps メンバーに D3DSTENCILCAPS_TWOSIDED が設定されているかどうかを調べます。「D3DSTENCILCAPS」も参照してください。

  • D3DRS_CCW_STENCILFAIL
    反時計回りのステンシル テストに失敗したときに実行するステンシル処理です。値は D3DSTENCILOP 列挙型です。デフォルト値は D3DSTENCILOP_KEEP です。

  • D3DRS_CCW_STENCILZFAIL
    反時計回りのステンシル テストにパスし、z テストに失敗した場合に実行するステンシル処理です。値は D3DSTENCILOP 列挙型です。デフォルト値は D3DSTENCILOP_KEEP です。

  • D3DRS_CCW_STENCILPASS
    反時計回りのステンシル テストと z テストの両方にパスした場合に実行するステンシル処理です。値は D3DSTENCILOP 列挙型です。デフォルト値は D3DSTENCILOP_KEEP です。

  • D3DRS_CCW_STENCILFUNC
    比較関数です。反時計回りのステンシル テストにパスするのは、((ref & mask) ステンシル関数 (stencil & mask)) が true の場合です。値は D3DCMPFUNC 列挙型です。デフォルト値は D3DCMP_ALWAYS です。

  • D3DRS_COLORWRITEENABLE1
    デバイスに対する追加的な ColorWriteEnable 値です。「D3DRS_COLORWRITEENABLE」を参照してください。この機能は、D3DPMISCCAPS_INDEPENDENTWRITEMASKS 能力ビットが デバイスの D3DCAPS9 構造体の PrimitiveMiscCaps メンバーで設定されている場合に利用できます。既定値は 0x0000000f です。

  • D3DRS_COLORWRITEENABLE2
    デバイスに対する追加的な ColorWriteEnable 値です。「D3DRS_COLORWRITEENABLE」を参照してください。この機能は、D3DPMISCCAPS_INDEPENDENTWRITEMASKS 能力ビットが デバイスの D3DCAPS9 構造体の PrimitiveMiscCaps メンバーで設定されている場合に利用できます。既定値は 0x0000000f です。

  • D3DRS_COLORWRITEENABLE3
    デバイスに対する追加的な ColorWriteEnable 値です。「D3DRS_COLORWRITEENABLE」を参照してください。この機能は、D3DPMISCCAPS_INDEPENDENTWRITEMASKS 能力ビットが デバイスの D3DCAPS9 構造体の PrimitiveMiscCaps メンバーで設定されている場合に利用できます。既定値は 0x0000000f です。

  • D3DRS_BLENDFACTOR
    アルファ ブレンディングの際に定数ブレンディング係数として使う D3DCOLOR です。この機能は、D3DCAPS9 の SrcBlendCaps メンバーまたは D3DCAPS9 の DestBlendCaps メンバーで、D3DPBLENDCAPS_BLENDFACTOR 能力ビットが設定されている場合に利用できます。「D3DRENDERSTATETYPE」を参照してください。既定値は 0xffffffff です。

  • D3DRS_SRGBWRITEENABLE
    レンダー ターゲットへの書き込みで、sRGB へのガンマ補正を有効にします。フォーマットでは D3DUSAGE_SRGBWRITE を公開する必要があります。既定値は 0 です。

  • D3DRS_DEPTHBIAS
    深度値の比較に使用する浮動小数点値です。「深度バイアス (Direct3D 9)」を参照してください。既定値は 0 です。

  • D3DRS_WRAP8
    「D3DRS_WRAP0」を参照してください。

  • D3DRS_WRAP9
    「D3DRS_WRAP0」を参照してください。

  • D3DRS_WRAP10
    「D3DRS_WRAP0」を参照してください。

  • D3DRS_WRAP11
    「D3DRS_WRAP0」を参照してください。

  • D3DRS_WRAP12
    「D3DRS_WRAP0」を参照してください。

  • D3DRS_WRAP13
    「D3DRS_WRAP0」を参照してください。

  • D3DRS_WRAP14
    「D3DRS_WRAP0」を参照してください。

  • D3DRS_WRAP15
    「D3DRS_WRAP0」を参照してください。

  • D3DRS_SEPARATEALPHABLENDENABLE
    TRUE に設定すると、アルファ チャネルに対する個別のブレンディング モードが有効になります。デフォルト値は FALSE です。

    false に設定した場合、アルファに対して適用される、レンダー ターゲットのブレンディング係数およびブレンディング処理は、カラーに対して定義されているものと同じになります。このモードは、D3DPMISCCAPS_SEPARATEALPHABLEND 能力が設定されていない実装では、実質的に FALSE 固定です。「D3DPMISCCAPS」を参照してください。

    個別のアルファ ブレンディングのタイプは、D3DRS_SRCBLENDALPHA と D3DRS_DESTBLENDALPHA のレンダリング ステートによって決まります。

  • D3DRS_SRCBLENDALPHA
    D3DBLEND 列挙型のいずれかのメンバーです。D3DRS_SEPARATEALPHABLENDENABLEが true でない場合、この値は無視されます。デフォルト値は D3DBLEND_ONE です。

  • D3DRS_DESTBLENDALPHA
    D3DBLEND 列挙型のいずれかのメンバーです。D3DRS_SEPARATEALPHABLENDENABLE が true である場合を除いて、この値は無視されます。デフォルト値は D3DBLEND_ZERO です。

  • D3DRS_BLENDOPALPHA
    レンダリング ステート D3DRS_SEPARATEALPHABLENDENABLE を TRUE に設定している場合に、個別のアルファ ブレンディングに適用する演算処理の選択に使う値です。

    有効な値は D3DBLENDOP 列挙型で定義します。デフォルト値は D3DBLENDOP_ADD です。

    D3DPMISCCAPS_BLENDOP デバイス能力がサポートされていない場合は、D3DBLENDOP_ADD が実行されます。「D3DPMISCCAPS」を参照してください。

  • D3DRS_FORCE_DWORD
    コンパイル時に、この列挙型のサイズを 32 ビットにするために定義されています。この値を指定しない場合、一部のコンパイラでは列挙型を 32 ビット以外のサイズでコンパイル可能です。この定数が使用されることはありません。

解説 

レンダリング ステート
ps_1_1 ~ ps_1_34 テクスチャー サンプラー

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

 // Enable U/V wrapping for textures that use the texture  // coordinate set at the index within the dwIndex variable      HRESULT hr = pd3dDevice->SetRenderState( dwIndex + D3DRENDERSTATE_WRAPBIAS,   D3DWRAPCOORD_0 | D3DWRAPCOORD_1);       // If dwIndex is 3, the value that results from  // the addition equals D3DRS_WRAP3 (131) 

要件

ヘッダー: D3D9Types.h 宣言

関連項目

IDirect3DDevice9::GetRenderState, IDirect3DDevice9::SetRenderState