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 枚举类型的一个成员。 将此状态设置为 D3DZB_TRUE 以启用 z 缓冲,D3DZB_USEW 启用 w 缓冲,或D3DZB_FALSE禁用深度缓冲。

如果通过将 D3DPRESENT_PARAMETERS 结构的 EnableAutoDepthStencil 成员设置为 TRUE,将深度模具与交换链一起创建,则此呈现状态的默认值为D3DZB_TRUE,否则D3DZB_FALSE。

D3DRS_FILLMODE

D3DFILLMODE 枚举类型的一个或多个成员。 默认值为 D3DFILL_SOLID。

D3DRS_SHADEMODE

D3DSHADEMODE 枚举类型的一个或多个成员。 默认值为 D3DSHADE_GOURAUD。

D3DRS_ZWRITEENABLE

如果为 TRUE ,则使应用程序能够写入深度缓冲区。 默认值为 TRUE。 此成员使应用程序能够阻止系统使用新的深度值更新深度缓冲区。 如果 为 FALSE,则仍会根据呈现状态D3DRS_ZFUNC进行深度比较,假设正在进行深度缓冲,但深度值不会写入缓冲区。

D3DRS_ALPHATESTENABLE

如果为 TRUE ,则启用每像素 alpha 测试。 如果测试通过,则像素由帧缓冲区处理。 否则,将跳过像素的所有帧缓冲区处理。

测试是通过使用呈现状态D3DRS_ALPHAFUNC提供的比较函数,将传入的 alpha 值与引用 alpha 值进行比较来完成的。 引用 alpha 值由为 D3DRS_ALPHAREF 设置的值确定。 有关详细信息,请参阅 Alpha 测试状态 (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

值,该值指定启用 alpha 测试时针对的像素进行测试的引用 alpha 值。 这是放置在 DWORD 呈现状态值的低 8 位中的 8 位值。 值的范围可以是0x00000000到0x000000FF。 默认值为 0。

D3DRS_ALPHAFUNC

D3DCMPFUNC 枚举类型的一个成员。 默认值为 D3DCMP_ALWAYS。 此成员使应用程序能够基于其 alpha 值接受或拒绝像素。

D3DRS_DITHERENABLE

如果为 TRUE ,则启用抖项。 默认值为 FALSE

D3DRS_ALPHABLENDENABLE

如果为 TRUE ,则启用 alpha 混合透明度。 默认值为 FALSE

alpha 混合的类型由D3DRS_SRCBLEND和D3DRS_DESTBLEND呈现状态决定。

D3DRS_FOGENABLE

如果为 TRUE ,则启用雾混合。 默认值为 FALSE。 有关使用雾混合的详细信息,请参阅 Fog

D3DRS_SPECULARENABLE

如果为 TRUE ,则启用高光。 默认值为 FALSE

反射高光的计算方式是,被点亮的对象中的每个顶点都位于对象的原点。 只要对象围绕原点建模,并且从光线到对象的距离相对较长,这就能得出预期结果。 在其他情况下,结果为未定义。

如果此成员设置为 TRUE,则反射颜色将添加到纹理级联之后但 alpha 混合之前的基本颜色。

D3DRS_FOGCOLOR

类型为 D3DCOLOR 的值。 默认值为 0。 有关雾色的详细信息,请参阅 迷雾颜色 (Direct3D 9)

D3DRS_FOGTABLEMODE

用于像素雾的迷雾公式。 设置为 D3DFOGMODE 枚举类型的成员之一。 默认值为 D3DFOG_NONE。 有关像素雾的详细信息,请参阅 像素雾 (Direct3D 9)

D3DRS_FOGSTART

对于线性雾化模式,像素或顶点雾效果开始的深度。 默认值为 0.0f。 深度是在顶点雾的世界空间和设备空间 [0.0, 1.0] 或像素雾的世界空间中指定的。 对于像素雾,当系统使用 z 进行雾计算时,这些值在设备空间中,当系统使用相对眼睛的雾 (w-fog) 时,这些值位于设备空间中。 有关详细信息,请参阅 Fog Parameters (Direct3D 9) 眼睛相对深度与基于 Z 的深度

此呈现状态的值是浮点值。 由于 IDirect3DDevice9::SetRenderState 方法接受 DWORD 值,因此应用程序必须强制转换包含值的变量,如以下代码示例所示。

pDevice9->SetRenderState(D3DRS_FOGSTART, 
                         *((DWORD*) (&fFogStart)));

D3DRS_FOGEND

对于线性雾化模式,像素或顶点雾效果结束的深度。 默认值为 1.0f。 深度是在顶点雾的世界空间和设备空间 [0.0, 1.0] 或像素雾的世界空间中指定的。 对于像素雾,当系统使用 z 进行雾计算时,这些值位于设备空间中;当系统使用相对眼睛的雾 (w-fog) 时,这些值位于世界空间中。 有关详细信息,请参阅 Fog Parameters (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。 有关详细信息,请参阅 Fog Parameters (Direct3D 9)

此呈现状态的值是浮点值。 由于 IDirect3DDevice9::SetRenderState 方法接受 DWORD 值,因此应用程序必须强制转换包含值的变量,如以下代码示例所示。

    m_pDevice9->SetRenderState(D3DRS_FOGDENSITY, *((DWORD*) (&fFogDensity)));

D3DRS_RANGEFOGENABLE

如果为 TRUE ,则启用基于范围的顶点雾。 默认值为 FALSE,在这种情况下,系统使用基于深度的雾。 在基于范围的雾中,对象与查看器的距离用于计算雾效果,而不是对象 (的深度,即场景中的 z 坐标) 。 在基于范围的雾中,所有迷雾方法都照常工作,只不过它们在计算中使用范围而不是深度。

范围是用于雾计算的正确因素,但通常改为使用深度,因为范围计算非常耗时,并且深度通常已可用。 使用深度来计算雾度具有不可取的效果,即当观看者的眼睛移动时,外围对象的模糊性会发生变化 -在这种情况下,深度变化和范围保持不变。

由于当前没有硬件支持基于每个像素范围的雾,因此仅针对顶点雾提供范围更正。

有关详细信息,请参阅 顶点雾 (Direct3D 9)

D3DRS_STENCILENABLE

如果为 TRUE ,则为启用扩展; 如果为 FALSE ,则为禁用 stenciling。 默认值为 FALSE。 有关详细信息,请参阅 模具缓冲区技术 (Direct3D 9)

D3DRS_STENCILFAIL

在模具测试失败时执行的模具操作。 值来自 D3DSTENCILOP 枚举类型。 默认值为 D3DSTENCILOP_KEEP。

D3DRS_STENCILZFAIL

模具操作在模具测试通过且深度测试 (z-test) 失败时执行。 值来自 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标志的任意组合。 这会导致系统在给定纹理的第一个、第二个、第三个和第四个维度(有时称为 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

如果为 TRUE ,则通过 Direct3D 启用基元剪辑; 如果为 FALSE ,则禁用它。 默认值为 TRUE

D3DRS_LIGHTING

如果为 TRUE ,则启用 Direct3D 照明; 如果为 FALSE ,则禁用它。 默认值为 TRUE。 仅包含顶点法线的顶点被正确点亮;不包含法线的顶点在所有照明计算中都使用 0 的点积。

D3DRS_AMBIENT

环境光颜色。 此值的类型为 D3DCOLOR。 默认值为 0。

D3DRS_FOGVERTEXMODE

用于顶点雾的雾公式。 设置为 D3DFOGMODE 枚举类型的一个成员。 默认值为 D3DFOG_NONE。

D3DRS_COLORVERTEX

如果为 TRUE ,则启用每顶点颜色; 如果为 FALSE ,则禁用该颜色。 默认值为 TRUE。 启用每个顶点颜色允许系统在其照明计算中包含为单个顶点定义的颜色。

有关详细信息,请参阅以下呈现状态:

  • D3DRS_DIFFUSEMATERIALSOURCE
  • D3DRS_SPECULARMATERIALSOURCE
  • D3DRS_AMBIENTMATERIALSOURCE
  • D3DRS_EMISSIVEMATERIALSOURCE

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

一个浮点值,指定在未为每个顶点指定点大小的情况下用于点大小计算的大小。 当顶点包含点大小时,不使用此值。 如果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 样式的单像素点。

D3DRS_POINTSCALEENABLE

控制点基元大小计算的布尔值。 如果 为 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 个写入启用。 呈现到单个示例缓冲区时,此呈现状态无效。 默认值为 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

一个浮点值,该值指定将点子画面固定到的最大大小。 该值必须小于或等于 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

控制补间因子的浮点值。 默认值为 0.0f。 由于 IDirect3DDevice9::SetRenderState 方法接受 DWORD 值,因此应用程序必须强制转换包含值的变量,如以下代码示例所示。

m_pDevice9->SetRenderState(D3DRS_TWEENFACTOR, *((DWORD*)&TweenFactor));

D3DRS_BLENDOP

当 alpha 混合呈现状态(D3DRS_ALPHABLENDENABLE)设置为 TRUE 时,用于选择应用的算术运算的值。 有效值由 D3DBLENDOP 枚举类型定义。 默认值为 D3DBLENDOP_ADD。

如果不支持D3DPMISCCAPS_BLENDOP设备功能,则执行D3DBLENDOP_ADD。

D3DRS_POSITIONDEGREE

N 补丁位置内插度。 这些值可以是默认) 或D3DDEGREE_LINEAR D3DDEGREE_CUBIC (。 有关详细信息,请参阅 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。 请参阅 Tessellation (Direct3D 9)

D3DRS_MAXTESSELLATIONLEVEL

最大分割级别。 默认值为 1.0f。 请参阅 Tessellation (Direct3D 9)

D3DRS_ADAPTIVETESS_X

等于在 x 方向上自适应细化。 默认值为 0.0f。 请参阅 自适应分割

D3DRS_ADAPTIVETESS_Y

在 y 方向上自适应细化。 默认值为 0.0f。 请参阅 Adaptive_Tessellation

D3DRS_ADAPTIVETESS_Z

等于自适应 tessellate,在 z 方向。 默认值为 1.0f。 请参阅 Adaptive_Tessellation

D3DRS_ADAPTIVETESS_W

等于自适应细化,在 w 方向。 默认值为 0.0f。 请参阅 Adaptive_Tessellation

D3DRS_ENABLEADAPTIVETESSELLATION

如果为 TRUE ,则启用自适应分割, 如果为 FALSE ,则禁用它。 默认值为 FALSE。 请参阅 Adaptive_Tessellation

D3DRS_TWOSIDEDSTENCILMODE

TRUE 启用双面紧紧, FALSE 禁用它。 默认值为 FALSE。 应用程序应将 D3DRS_CULLMODE 设置为 D3DCULL_NONE 以启用双面模具模式。 如果三角形绕组顺序顺时针,则将使用D3DRS_STENCIL* 运算。 如果绕组顺序逆时针排列,则将使用D3DRS_CCW_STENCIL* 运算。

若要查看是否支持双面模具,检查 D3DCAPS9 的 StencilCaps 成员D3DSTENCILCAPS_TWOSIDED。 另请参阅 D3DSTENCILCAPS

D3DRS_CCW_STENCILFAIL

在 CCW 模具测试失败时执行的模具操作。 值来自 D3DSTENCILOP 枚举类型。 默认值为 D3DSTENCILOP_KEEP。

D3DRS_CCW_STENCILZFAIL

在 CCW 模具测试通过且 z 测试失败时执行的模具操作。 值来自 D3DSTENCILOP 枚举类型。 默认值为 D3DSTENCILOP_KEEP。

D3DRS_CCW_STENCILPASS

在 CCW 模具和 z 测试都通过时执行的模具操作。 值来自 D3DSTENCILOP 枚举类型。 默认值为 D3DSTENCILOP_KEEP。

D3DRS_CCW_STENCILFUNC

比较函数。 如果 ( (ref & mask) 模具函数 (模具掩码) ) 为 TRUE,则 CCW 模具&测试通过。 值来自 D3DCMPFUNC 枚举类型。 默认值为 D3DCMP_ALWAYS。

D3DRS_COLORWRITEENABLE1

设备的其他 ColorWriteEnable 值。 请参阅 D3DRS_COLORWRITEENABLE。 如果在设备的 D3DCAPS9 结构的 PrimitiveMiscCaps 成员中设置了 D3DPMISCCAPS_INDEPENDENTWRITEMASKS 功能位,则此功能可用。 默认值为 0x0000000f。

D3DRS_COLORWRITEENABLE2

设备的其他 ColorWriteEnable 值。 请参阅 D3DRS_COLORWRITEENABLE。 如果在设备的 D3DCAPS9 结构的 PrimitiveMiscCaps 成员中设置了 D3DPMISCCAPS_INDEPENDENTWRITEMASKS 功能位,则此功能可用。 默认值为 0x0000000f。

D3DRS_COLORWRITEENABLE3

设备的其他 ColorWriteEnable 值。 请参阅 D3DRS_COLORWRITEENABLE。 如果在设备的 D3DCAPS9 结构的 PrimitiveMiscCaps 成员中设置了 D3DPMISCCAPS_INDEPENDENTWRITEMASKS 功能位,则此功能可用。 默认值为 0x0000000f。

D3DRS_BLENDFACTOR

D3DCOLOR 用于 alpha 混合过程中的常量混合因子。 如果在 D3DCAPS9 的 SrcBlendCaps 成员或 D3DCAPS9 的 DestBlendCaps 成员中设置了D3DPBLENDCAPS_BLENDFACTOR功能 位,则此功能可用。 请参阅 D3DRENDERSTATETYPE。 默认值为 0xffffffff。

D3DRS_SRGBWRITEENABLE

启用将 gamma 更正为 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 为 alpha 通道启用单独的混合模式。 默认值为 FALSE

如果设置为 FALSE,则应用于 alpha 的呈现目标混合因子和操作强制与为颜色定义的因素相同。 对于未设置上限D3DPMISCCAPS_SEPARATEALPHABLEND的实现,此模式实际上已硬连接为 FALSE 。 请参阅 D3DPMISCCAPS

单独 alpha 混合的类型由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 时,用于选择应用于单独 alpha 混合的算术运算的值。

有效值由 D3DBLENDOP 枚举类型定义。 默认值为 D3DBLENDOP_ADD。

如果不支持D3DPMISCCAPS_BLENDOP设备功能,则执行D3DBLENDOP_ADD。 请参阅 D3DPMISCCAPS

D3DRS_FORCE_DWORD

强制此枚举编译为大小为 32 位。 如果没有此值,某些编译器将允许此枚举编译为 32 位以外的大小。 不使用此值。

备注

呈现状态 纹理采样器
ps_1_1 ps_1_3 4 个纹理采样器

 

Direct3D 定义D3DRENDERSTATE_WRAPBIAS常量,以便应用程序根据纹理坐标集 (的从零开始的整数启用或禁用纹理包装,而不是显式使用) D3DRS_WRAP n 状态值之一。 将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

另请参阅

Direct3D 枚举

IDirect3DDevice9::GetRenderState

IDirect3DDevice9::SetRenderState