D3DRENDERSTATETYPE枚举 (d3d9types.h)
D3DRENDERSTATETYPE枚举类型列出了各种属性或呈现状态。 由驱动程序独占使用的D3DRENDERSTATETYPE枚举器可以指定呈现信息或纹理属性。 显示驱动程序使用以下呈现状态:
语法
typedef enum _D3DRENDERSTATETYPE {
D3DRS_ZENABLE,
D3DRS_FILLMODE,
D3DRS_SHADEMODE,
D3DRS_ZWRITEENABLE,
D3DRS_ALPHATESTENABLE,
D3DRS_LASTPIXEL,
D3DRS_SRCBLEND,
D3DRS_DESTBLEND,
D3DRS_CULLMODE,
D3DRS_ZFUNC,
D3DRS_ALPHAREF,
D3DRS_ALPHAFUNC,
D3DRS_DITHERENABLE,
D3DRS_ALPHABLENDENABLE,
D3DRS_FOGENABLE,
D3DRS_SPECULARENABLE,
D3DRS_FOGCOLOR,
D3DRS_FOGTABLEMODE,
D3DRS_FOGSTART,
D3DRS_FOGEND,
D3DRS_FOGDENSITY,
D3DRS_RANGEFOGENABLE,
D3DRS_STENCILENABLE,
D3DRS_STENCILFAIL,
D3DRS_STENCILZFAIL,
D3DRS_STENCILPASS,
D3DRS_STENCILFUNC,
D3DRS_STENCILREF,
D3DRS_STENCILMASK,
D3DRS_STENCILWRITEMASK,
D3DRS_TEXTUREFACTOR,
D3DRS_WRAP0,
D3DRS_WRAP1,
D3DRS_WRAP2,
D3DRS_WRAP3,
D3DRS_WRAP4,
D3DRS_WRAP5,
D3DRS_WRAP6,
D3DRS_WRAP7,
D3DRS_CLIPPING,
D3DRS_LIGHTING,
D3DRS_AMBIENT,
D3DRS_FOGVERTEXMODE,
D3DRS_COLORVERTEX,
D3DRS_LOCALVIEWER,
D3DRS_NORMALIZENORMALS,
D3DRS_DIFFUSEMATERIALSOURCE,
D3DRS_SPECULARMATERIALSOURCE,
D3DRS_AMBIENTMATERIALSOURCE,
D3DRS_EMISSIVEMATERIALSOURCE,
D3DRS_VERTEXBLEND,
D3DRS_CLIPPLANEENABLE,
D3DRS_POINTSIZE,
D3DRS_POINTSIZE_MIN,
D3DRS_POINTSPRITEENABLE,
D3DRS_POINTSCALEENABLE,
D3DRS_POINTSCALE_A,
D3DRS_POINTSCALE_B,
D3DRS_POINTSCALE_C,
D3DRS_MULTISAMPLEANTIALIAS,
D3DRS_MULTISAMPLEMASK,
D3DRS_PATCHEDGESTYLE,
D3DRS_DEBUGMONITORTOKEN,
D3DRS_POINTSIZE_MAX,
D3DRS_INDEXEDVERTEXBLENDENABLE,
D3DRS_COLORWRITEENABLE,
D3DRS_TWEENFACTOR,
D3DRS_BLENDOP,
D3DRS_POSITIONDEGREE,
D3DRS_NORMALDEGREE,
D3DRS_SCISSORTESTENABLE,
D3DRS_SLOPESCALEDEPTHBIAS,
D3DRS_ANTIALIASEDLINEENABLE,
D3DRS_MINTESSELLATIONLEVEL,
D3DRS_MAXTESSELLATIONLEVEL,
D3DRS_ADAPTIVETESS_X,
D3DRS_ADAPTIVETESS_Y,
D3DRS_ADAPTIVETESS_Z,
D3DRS_ADAPTIVETESS_W,
D3DRS_ENABLEADAPTIVETESSELLATION,
D3DRS_TWOSIDEDSTENCILMODE,
D3DRS_CCW_STENCILFAIL,
D3DRS_CCW_STENCILZFAIL,
D3DRS_CCW_STENCILPASS,
D3DRS_CCW_STENCILFUNC,
D3DRS_COLORWRITEENABLE1,
D3DRS_COLORWRITEENABLE2,
D3DRS_COLORWRITEENABLE3,
D3DRS_BLENDFACTOR,
D3DRS_SRGBWRITEENABLE,
D3DRS_DEPTHBIAS,
D3DRS_WRAP8,
D3DRS_WRAP9,
D3DRS_WRAP10,
D3DRS_WRAP11,
D3DRS_WRAP12,
D3DRS_WRAP13,
D3DRS_WRAP14,
D3DRS_WRAP15,
D3DRS_SEPARATEALPHABLENDENABLE,
D3DRS_SRCBLENDALPHA,
D3DRS_DESTBLENDALPHA,
D3DRS_BLENDOPALPHA,
D3DRS_FORCE_DWORD
} D3DRENDERSTATETYPE;
常数
D3DRS_ZENABLE 表示深度缓冲状态的 D3DZBUFFERTYPE 枚举类型。 |
D3DRS_FILLMODE D3DFILLMODE 枚举类型。 |
D3DRS_SHADEMODE D3DSHADEMODE 枚举类型。 |
D3DRS_ZWRITEENABLE 为 TRUE,使应用程序能够写入深度缓冲区。 默认值为 TRUE。 此成员使应用程序能够阻止系统使用新的深度值更新深度缓冲区。 如果为 FALSE,则仍根据呈现状态D3DRS_ZFUNC进行深度比较,假设正在进行深度缓冲,但深度值不会写入缓冲区。 |
D3DRS_ALPHATESTENABLE 为 TRUE 以启用每个像素 alpha 测试。 如果测试通过,则像素由帧缓冲区处理。 否则,将跳过像素的所有帧缓冲区处理。 |
D3DRS_LASTPIXEL 默认值为 TRUE,用于在线条中绘制最后一个像素。 若要防止绘制最后一个像素,请将此值设置为 FALSE。 |
D3DRS_SRCBLEND D3DBLEND 枚举类型。 |
D3DRS_DESTBLEND D3DBLEND枚举类型。 |
D3DRS_CULLMODE 一种 D3DCULL 枚举类型,指定如何剔除面向背的三角形(如果有)。 |
D3DRS_ZFUNC 一种 D3DCMPFUNC 枚举类型,使应用程序能够根据其距离相机接受或拒绝像素。 像素的深度值与深度缓冲区值进行比较。 如果像素的深度值通过比较函数,则写入像素。 仅当呈现状态为 TRUE 时,深度值才会写入深度缓冲区。 |
D3DRS_ALPHAREF 值,该值指定在启用 alpha 测试时测试的像素的引用 alpha 值。 这是放置在 DWORD 呈现状态值的低 8 位中的 8 位值。 值的范围可以是从0x00000000到0x000000FF。 默认值为 0。 |
D3DRS_ALPHAFUNC D3DCMPFUNC枚举类型,使应用程序能够根据其 alpha 值接受或拒绝像素。 |
D3DRS_DITHERENABLE 为 TRUE 以启用任用。 默认值为 FALSE。 |
D3DRS_ALPHABLENDENABLE 为 TRUE 以启用 alpha 混合透明度。 默认值为 FALSE。 alpha 混合的类型由D3DRS_SRCBLEND和D3DRS_DESTBLEND呈现状态决定。 |
D3DRS_FOGENABLE 为 TRUE 以启用雾混合。 默认值为 FALSE。 |
D3DRS_SPECULARENABLE 为 TRUE 以启用反射高光。 默认值为 FALSE。 反射高光被计算为对象中的每个顶点都位于对象的原点处。 只要对象围绕原点进行建模,并且从光到对象的距离相对较大,这就会产生预期结果。 在其他情况下,结果为未定义。 当此成员设置为 TRUE 时,反射颜色将添加到纹理级联之后的基色,但在 alpha 混合之前。 |
D3DRS_FOGCOLOR D3DCOLORVALUE 结构。 |
D3DRS_FOGTABLEMODE 一个 D3DFOGMODE 枚举类型,该类型表示用于像素雾的雾公式。 |
D3DRS_FOGSTART 像素或顶点雾效果开始于线性雾模式的深度。 默认值为 0.0f。 深度在顶点雾和设备空间 [0.0, 1.0] 或像素雾的世界空间中指定。 对于像素雾,当系统使用 z 进行雾计算时,这些值位于设备空间中,当系统使用相对于眼睛的雾(w-fog)时,世界空间。 |
D3DRS_FOGEND 线性雾模式的像素或顶点雾效果结束的深度。 默认值为 1.0f。 深度在顶点雾和设备空间 [0.0, 1.0] 或像素雾的世界空间中指定。 对于像素雾,当系统使用 z 进行雾计算时,这些值位于设备空间中,当系统使用相对于眼睛的雾(w-fog)时,在世界空间中。 |
D3DRS_FOGDENSITY 指数雾模式中使用的像素或顶点雾的雾密度(D3DFOG_EXP和D3DFOG_EXP2)。 有效密度值范围为 0.0 到 1.0。 |
D3DRS_RANGEFOGENABLE TRUE 启用基于范围的顶点雾。 默认值为 FALSE,在这种情况下,系统使用基于深度的雾。 在基于范围的雾中,对象与查看器的距离用于计算雾效果,而不是场景中对象(即 z 坐标)的深度。 在基于范围的雾中,所有雾法都像往常一样工作,只是它们使用范围而不是计算中的深度。 范围是用于雾计算的正确因素,但通常使用深度,因为范围非常耗时,计算和深度已普遍可用。 使用深度来计算雾对外围物体的雾度随观看者的眼睛移动而变化的不良影响 -在这种情况下,深度变化和范围保持不变。 由于目前没有硬件支持基于像素范围的雾,因此仅针对顶点雾提供范围更正。 |
D3DRS_STENCILENABLE 如果为 TRUE,则启用 stenciling;如果为 FALSE,则禁用 stenciling。 默认值为 FALSE。 |
D3DRS_STENCILFAIL 一种 D3DSTENCILOP 枚举类型,指定模具测试失败时要执行的模具作。 默认值为D3DSTENCILOP_KEEP。 |
D3DRS_STENCILZFAIL 一种D3DSTENCILOP枚举类型,指定模具测试通过且深度测试(z-test)失败时要执行的模具作。 |
D3DRS_STENCILPASS 一种D3DSTENCILOP枚举类型,指定模具作在模具和深度 (z) 测试通过时要执行的模具作。 |
D3DRS_STENCILFUNC 比较函数用于将引用值与模具缓冲区条目进行比较。 此比较仅适用于在模具掩码(由D3DRS_STENCILMASK呈现状态设置)中设置的引用值和模具缓冲区条目中的位。 如果为 TRUE,则模具测试通过。 |
D3DRS_STENCILREF 模具测试的 int 引用值。 默认值为 0。 |
D3DRS_STENCILMASK 应用于引用值和每个模具缓冲区条目的掩码,以确定模具测试的重要位。 默认掩码为0xFFFFFFFF。 |
D3DRS_STENCILWRITEMASK 应用于写入模具缓冲区的值的写入掩码。 默认掩码为0xFFFFFFFF。 |
D3DRS_TEXTUREFACTOR 用于多纹理混合的颜色与D3DTA_TFACTOR纹理混合参数或D3DTOP_BLENDFACTORALPHA纹理混合作。 |
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 环境光颜色。 |
D3DRS_FOGVERTEXMODE 用于顶点雾的雾公式。 |
D3DRS_COLORVERTEX 如果为 TRUE,则启用每顶点颜色或 FALSE 以禁用它。 默认值为 TRUE。 启用每顶点颜色允许系统在其照明计算中包括为各个顶点定义的颜色。 |
D3DRS_LOCALVIEWER 如果为 TRUE,则启用相机相对反射高光或 FALSE 以使用正交反射高光。 默认值为 TRUE。 使用正交投影的应用程序应指定 FALSE。 |
D3DRS_NORMALIZENORMALS 如果为 TRUE,则启用顶点法线的自动规范化,或启用 FALSE 以禁用它。 默认值为 FALSE。 启用此功能会导致系统在将顶点转换为相机空间后,使顶点的顶点法线规范化,这在计算上非常耗时。 |
D3DRS_DIFFUSEMATERIALSOURCE 用于照明计算的漫射颜色源。 |
D3DRS_SPECULARMATERIALSOURCE 用于照明计算的反射颜色源。 |
D3DRS_AMBIENTMATERIALSOURCE 用于照明计算的环境颜色源。 |
D3DRS_EMISSIVEMATERIALSOURCE 用于照明计算的 Emissive 颜色源。 |
D3DRS_VERTEXBLEND 用于执行几何混合的矩阵数(如果有)。 |
D3DRS_CLIPPLANEENABLE 启用或禁用用户定义的剪辑平面。 有效值为任何 DWORD,其中每个位(设置或未设置)的状态切换相应的用户定义的剪辑平面的激活状态。 最小有效位(位 0)控制索引 0 处的第一个剪辑平面,后续位控制在较高索引处剪辑平面的激活。 如果设置了位,则系统在场景呈现期间应用适当的剪裁平面。 默认值为 0。 |
D3DRS_POINTSIZE 一个浮点值,该值指定在未为每个顶点指定点大小的情况下用于点大小计算的大小。 当顶点包含点大小时,不会使用此值。 如果D3DRS_POINTSCALEENABLE为 FALSE,则此值位于屏幕空间单位中;否则此值位于世界空间单位中。 默认值是驱动程序返回的值。 如果驱动程序返回 0 或 1,则默认值为 64,这允许软件点大小仿真。 |
D3DRS_POINTSIZE_MIN 一个浮点值,该值指定点基元的最小大小。 在呈现期间,点基元会固定到此大小。 如果将此值设置为小于 1.0 的值,则当点未覆盖像素中心且反锯齿被禁用或启用抗锯齿时呈现强度降低时,点会下降。 默认值为 1.0f。 此值的范围大于或等于 0.0f。 |
D3DRS_POINTSPRITEENABLE 如果为 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。 |
D3DRS_POINTSCALE_B 一个浮点值,用于控制点基元的基于距离的大小衰减。 仅在D3DRS_POINTSCALEENABLE为 TRUE 时处于活动状态。 默认值为 0.0f。 此值的范围大于或等于 0.0f。 |
D3DRS_POINTSCALE_C 一个浮点值,用于控制点基元的基于距离的大小衰减。 仅在D3DRS_POINTSCALEENABLE为 TRUE 时处于活动状态。 默认值为 0.0f。 此值的范围大于或等于 0.0f。 |
D3DRS_MULTISAMPLEANTIALIAS 一个布尔值,该值确定在使用多重采样呈现目标缓冲区时如何计算单个样本。 设置为 TRUE 时,将计算多个样本,以便对每个多个样本在不同的样本位置执行全场景抗锯齿。 设置为 FALSE 时,会使用相同的样本值写入多个样本,这些样本在像素中心采样,从而允许对多重采样缓冲区进行非抗锯齿呈现。 当呈现到单个示例缓冲区时,此呈现状态不起作用。 默认值为 TRUE。 |
D3DRS_MULTISAMPLEMASK 此掩码中的每个位(从至少有效位(LSB)开始,控制多重采样呈现目标中的一个样本的修改。 因此,对于 8 样本呈现目标,低字节包含 8 个样本中每个样本的 8 个写入启用。 当呈现到单个示例缓冲区时,此呈现状态不起作用。 默认值为0xFFFFFFFF。 此呈现状态允许使用多重采样缓冲区作为累积缓冲区,对几何图形执行多通道呈现,其中每个传递都会更新样本的子集。 如果存在 n 个多重采样和已启用 k 的样本,则呈现的图像的结果强度应为 k/n。 每个像素的每个分量 RGB 均按 k/n 进行分解。 |
D3DRS_PATCHEDGESTYLE 设置修补边缘是否将使用浮点样式细化。 |
D3DRS_DEBUGMONITORTOKEN 仅设置用于调试监视器。 |
D3DRS_POINTSIZE_MAX 一个浮点值,该值指定将固定点子画面的最大大小。 该值必须小于或等于D3DCAPS9的 MaxPointSize 成员,并且大于或等于D3DRS_POINTSIZE_MIN。 默认值为 64.0。 |
D3DRS_INDEXEDVERTEXBLENDENABLE 启用或禁用索引顶点混合的布尔值。 默认值为 FALSE。 设置为 TRUE 时,将启用索引顶点混合。 设置为 FALSE 时,将禁用索引顶点混合。 如果启用此呈现状态,用户必须将矩阵索引作为打包的 DWORDwith 每个顶点传递。 禁用呈现状态并通过D3DRS_VERTEXBLEND状态启用顶点混合时,它相当于在每个顶点中具有矩阵索引 0、1、2、3。 |
D3DRS_COLORWRITEENABLE UINT 值,用于为呈现目标颜色缓冲区启用每通道写入。 设置位会导致 3D 呈现期间颜色通道更新。 清除位会导致颜色通道不受影响。 |
D3DRS_TWEENFACTOR 一个控制补间因子的浮点值。 |
D3DRS_BLENDOP 当 alpha 混合呈现状态(D3DRS_ALPHABLENDENABLE)设置为 TRUE 时,用于选择应用的算术运算的值。 如果不支持D3DPMISCCAPS_BLENDOP设备功能,则执行D3DBLENDOP_ADD。 |
D3DRS_POSITIONDEGREE N 修补位置内插度。 这些值可以是D3DDEGREE_CUBIC(默认值)或D3DDEGREE_LINEAR。 |
D3DRS_NORMALDEGREE N 修补正常内插度。 这些值可以是D3DDEGREE_LINEAR(默认值)或D3DDEGREE_QUADRATIC。 |
D3DRS_SCISSORTESTENABLE 如果为 TRUE,则启用剪刀测试和 FALSE 以禁用它。 默认值为 FALSE。 |
D3DRS_SLOPESCALEDEPTHBIAS 用于确定可应用于共同平面基元的偏差,以减少 z 战斗。 默认值为 0。 |
D3DRS_ANTIALIASEDLINEENABLE 为 TRUE 以启用行抗锯齿,FALSE 禁用行抗锯齿。 默认值为 FALSE。 |
D3DRS_MINTESSELLATIONLEVEL 最小分割级别。 默认值为 1.0f。 |
D3DRS_MAXTESSELLATIONLEVEL 最大分割级别。 默认值为 1.0f。 |
D3DRS_ADAPTIVETESS_X 在 x 方向的自适应细化量。 默认值为 0.0f。 |
D3DRS_ADAPTIVETESS_Y 等于 y 方向的自适应细化。 默认值为 0.0f。 |
D3DRS_ADAPTIVETESS_Z 在 z 方向上自适应细化。 默认值为 1.0f。 |
D3DRS_ADAPTIVETESS_W 在 w 方向上自适应细化。 默认值为 0.0f。 |
D3DRS_ENABLEADAPTIVETESSELLATION 如果为 TRUE,则启用自适应分割,则为 FALSE 以禁用它。 |
D3DRS_TWOSIDEDSTENCILMODE TRUE 启用双面紧身,FALSE 禁用它。 默认值为 FALSE。 应用程序应将D3DRS_CULLMODE设置为D3DCULL_NONE以启用双面模具模式。 如果三角形绕组顺序顺时针,将使用 D3DRS_STENCIL*作。 如果绕组顺序是逆时针的,将使用 D3DRS_CCW_STENCIL*作。 |
D3DRS_CCW_STENCILFAIL 如果 CCW 模具测试失败,则执行模具作。 |
D3DRS_CCW_STENCILZFAIL 如果 CCW 模具测试通过且 z 测试失败,则执行模具作。 |
D3DRS_CCW_STENCILPASS 如果 CCW 模具和 z 测试都通过,则执行模具作。 |
D3DRS_CCW_STENCILFUNC 比较函数。 如果(ref & mask)模具函数(模具 & 掩码)为 TRUE,则 CCW 模具测试通过。 |
D3DRS_COLORWRITEENABLE1 设备的其他 ColorWriteEnable 值。 |
D3DRS_COLORWRITEENABLE2 设备的其他 ColorWriteEnable 值。 |
D3DRS_COLORWRITEENABLE3 设备的其他 ColorWriteEnable 值。 |
D3DRS_BLENDFACTOR alpha 混合过程中的常量混合因子。 |
D3DRS_SRGBWRITEENABLE 使呈现目标写入能够被伽玛更正为 sRGB。 格式必须公开D3DUSAGE_SRGBWRITE。 默认值为 0。 |
D3DRS_DEPTHBIAS 用于比较深度值的浮点值。 |
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。 |
D3DRS_SRCBLENDALPHA 除非D3DRS_SEPARATEALPHABLENDENABLE为 TRUE,否则将忽略此值。 |
D3DRS_DESTBLENDALPHA 除非D3DRS_SEPARATEALPHABLENDENABLE为 TRUE,否则将忽略此值。 |
D3DRS_BLENDOPALPHA 当呈现状态D3DRS_SEPARATEALPHABLENDENABLE设置为 TRUE 时,用于选择应用于单独 alpha 混合的算术运算的值。 |
D3DRS_FORCE_DWORD 强制此枚举编译为大小为 32 位。 如果没有此值,某些编译器将允许此枚举编译为 32 位以外的大小。 不使用此值。 |
言论
这些呈现状态仅供内部使用:
D3DRENDERSTATE_EVICTMANAGEDTEXTURES
确定是否从内存中逐出纹理。 驱动程序使用不带默认值的 BOOL 数据类型来检测是否逐出。
此呈现状态确定驱动程序是否从视频内存中逐出它管理的纹理(而不是 Direct3D 运行时管理的纹理)。 如果呈现状态值 TRUE,驱动程序将逐出纹理。 否则,驱动程序不会逐出这些纹理。
D3DRENDERSTATE_SCENECAPTURE
指定帧内捕获的几何数据的开始场景信息或结束场景信息。 驱动程序使用默认值为 TRUE 的 BOOL 数据类型来检测场景捕获信息。
驱动程序首先使用 TRUE 响应D3DRENDERSTATE_SCENECAPTURE,以便开始场景信息,接下来响应 FALSE,以便结束场景信息捕获帧内的几何数据。 有关示例实现,请参阅 Windows 驱动程序开发工具包(DDK)附带的 permedia2 示例驱动程序。 在 D3DrawPrimitives2 调用中使用D3DRENDERSTATE_SCENECAPTURE呈现状态将替换旧版 D3DHALCallbacks->D3dSceneCapture 回调例程。
在更新实现旧版 D3DHALCallbacks的驱动程序时必须小心 ->使用D3DRENDERSTATE_SCENECAPTURE呈现状态将 D3dSceneCapture 回调例程更新为 D3DHALCallbacks。 D3dSceneCapture 回调例程使用常量D3DHAL_SCENE_CAPTURE_START和D3DHAL_SCENE_CAPTURE_END分别指示场景的开始和结尾。 这些常量的值分别为 0 和 1。 如果使用这些常量代替 TRUE,并在此呈现状态下 FALSE,则含义将与你打算的完全相反。
D3DRS_DELETERTPATCH
仅 DirectX 8.0 及更高版本。
从内存中删除矩形或三角补丁。 驱动程序使用没有默认值的 DWORD 数据类型来检测要删除的修补程序。
此呈现状态通知驱动程序要删除修补程序。 此呈现状态的值是受影响的修补程序的句柄。 应释放所有缓存的信息,并且应从驱动程序的修补句柄表中删除句柄。 当应用程序调用 deletePatch 函数时,此呈现状态对应用程序不可见,但在内部生成。 仅当 DeletePatch 显式删除修补程序时,才会将此呈现状态发送到驱动程序。 销毁设备时,应清理所有其他修补程序。
D3DRS_MAXPIXELSHADERINST
仅 DirectX 9.0 及更高版本。
确定像素着色器汇编程序可以执行的最大指令数。
驱动程序使用默认值为 D3DINFINITEINSTRUCTIONS (0xffffffff) 的 DWORD 数据类型来报告像素着色器指令的最大数目。 此最大数目取决于显示设备支持的像素着色器版本,如下表所示。
版本 | 最大数量 |
---|---|
早于 2_0 | 0 |
2_0 | 从 96 到 D3DINFINITEINSTRUCTIONS |
3_0 及更高版本 | 从 2ー⁶ (0x0000ffff) 到 D3DINFINITEINSTRUCTIONS |
D3DINFINITEINSTRUCTIONS表示几乎无限制的金额。
此呈现状态的有效值为幂为 2 的数字;如果驱动程序设置任何其他整数,运行时将使用下一个最接近的 2 个数字幂。
运行时将D3DCAPS9结构的 MaxVShaderInstructionsExecuted 成员设置为此最大数目。
D3DRS_MAXVERTEXSHADERINST
仅 DirectX 9.0 及更高版本。
确定顶点着色器汇编程序可以执行的最大指令数。
驱动程序使用默认值为 D3DINFINITEINSTRUCTIONS (0xffffffff) 的 DWORD 数据类型来报告顶点着色器指令的最大数目。 此最大数目取决于显示设备支持的顶点着色器版本,如下表所示。
版本 | 最大数量 |
---|---|
早于 2_0 | 0 |
2_0 及更高版本 | 从 2ー⁶ (0x0000ffff) 到 D3DINFINITEINSTRUCTIONS |
D3DINFINITEINSTRUCTIONS表示几乎无限制的金额。
此呈现状态的有效值为幂为 2 的数字;如果驱动程序设置任何其他整数,运行时将使用下一个最接近的 2 个数字幂。
运行时将D3DCAPS9结构的 MaxVShaderInstructionsExecuted 成员设置为此最大数目。
驱动程序在执行图形呈现时使用这些呈现状态。 只有特定于驱动程序的呈现状态才会包含在 Windows 驱动程序工具包 (WDK) 文档中。 DirectX SDK 文档中包含了 DirectX 应用程序可访问的呈现状态。 这些应用程序级呈现状态包括以下特征:是否启用 alpha 混合、是否启用抖动、是否使用 Direct3D 照明以及要使用的底纹类型。
若要更新特定的呈现状态,Direct3D 存储有关呈现状态的信息,然后调用驱动程序的 D3dDrawPrimitives2 回调例程。 提供给驱动程序的信息使它能够:
确定它应更新一个或多个呈现状态。
确定要更新的呈现状态,以及新的呈现状态值应是什么。
请注意,为使某些呈现状态得到遵守,驱动程序必须以前在D3DPRIMCAPS结构的相关成员中设置功能标志。
为了指示特定的呈现状态更新,Direct3D 会将 D3DHAL_DP2COMMAND 结构插入命令缓冲区,将此结构的 bCommand 成员设置为D3DDP2OP_RENDERSTATE(请参阅 D3DHAL_DP2OPERATION中的D3DDP2OP_RENDERSTATE说明),并将同一结构的 wStateCount 成员设置为要更新的呈现状态数。
紧跟在 D3DHAL_DP2COMMAND 结构之后,Direct3D 会将一个 D3DHAL_DP2RENDERSTATE 结构插入命令缓冲区,以便更新每个呈现状态。 此结构的 RenderState 成员标识要更改的呈现状态;此呈现状态的新值是在 dwState 成员(对于 DWORD 值)或 fState 成员(对于D3DVALUE值)中指定的。
下图显示了包含D3DDP2OP_RENDERSTATE命令和两个D3DHAL_DP2RENDERSTATE结构的命令缓冲区的一部分。 这三个结构中的第一个表示要更新两个呈现状态。 第二个结构指示将D3DRENDERSTATE_FILLMODE呈现状态更改为D3DFILL_SOLID。 第三个结构指示应将D3DRENDERSTATE_SHADEMODE呈现状态更新为D3DSHADE_GOURAUD。
显示具有D3DDP2OP_RENDERSTATE命令和两个D3DHAL_DP2RENDERSTATE结构图其他说明
有关所有已启用呈现状态类型的完整列表,请参阅 DirectX SDK 文档中的D3DTEXTURESTAGESTATETYPE、D3DTEXTUREOP和D3DTEXTUREFILTER枚举类型。
已对 DirectX 5.0 及更高版本D3DRENDERSTATETYPE枚举类型进行了一些更改。 D3DRENDERSTATE_BLENDENABLE已被完全删除,尽管它在 d3dtypes.h 头文件中定义为D3DRENDERSTATE_ALPHABLENDENABLE。 有关说明,请参阅D3DRENDERSTATE_COLORKEYENABLE。 间隔 [128, 255] 中的 128 个整数值保留为纹理坐标换行标志。 这些是使用D3DWRAP_U和D3DWRAP_V宏构造的。 使用标志字可保留与维度高于 2D 的纹理坐标的向前兼容性。
多文本宏作和D3DRENDERSTATE_TEXTUREFACTOR覆盖所有每个纹理阶段混合控件(COLOR{OP,ARG1,ARG2} & ALPHA{OP,ARG1,ARG2})。
要求
要求 | 价值 |
---|---|
标头 | d3d9types.h (包括 D3dhal.h) |