D3DCAPS9 结构 (d3d9caps.h)

表示通过 Direct3D 对象公开的硬件的功能。

语法

typedef struct _D3DCAPS9 {
  D3DDEVTYPE        DeviceType;
  UINT              AdapterOrdinal;
  DWORD             Caps;
  DWORD             Caps2;
  DWORD             Caps3;
  DWORD             PresentationIntervals;
  DWORD             CursorCaps;
  DWORD             DevCaps;
  DWORD             PrimitiveMiscCaps;
  DWORD             RasterCaps;
  DWORD             ZCmpCaps;
  DWORD             SrcBlendCaps;
  DWORD             DestBlendCaps;
  DWORD             AlphaCmpCaps;
  DWORD             ShadeCaps;
  DWORD             TextureCaps;
  DWORD             TextureFilterCaps;
  DWORD             CubeTextureFilterCaps;
  DWORD             VolumeTextureFilterCaps;
  DWORD             TextureAddressCaps;
  DWORD             VolumeTextureAddressCaps;
  DWORD             LineCaps;
  DWORD             MaxTextureWidth;
  DWORD             MaxTextureHeight;
  DWORD             MaxVolumeExtent;
  DWORD             MaxTextureRepeat;
  DWORD             MaxTextureAspectRatio;
  DWORD             MaxAnisotropy;
  float             MaxVertexW;
  float             GuardBandLeft;
  float             GuardBandTop;
  float             GuardBandRight;
  float             GuardBandBottom;
  float             ExtentsAdjust;
  DWORD             StencilCaps;
  DWORD             FVFCaps;
  DWORD             TextureOpCaps;
  DWORD             MaxTextureBlendStages;
  DWORD             MaxSimultaneousTextures;
  DWORD             VertexProcessingCaps;
  DWORD             MaxActiveLights;
  DWORD             MaxUserClipPlanes;
  DWORD             MaxVertexBlendMatrices;
  DWORD             MaxVertexBlendMatrixIndex;
  float             MaxPointSize;
  DWORD             MaxPrimitiveCount;
  DWORD             MaxVertexIndex;
  DWORD             MaxStreams;
  DWORD             MaxStreamStride;
  DWORD             VertexShaderVersion;
  DWORD             MaxVertexShaderConst;
  DWORD             PixelShaderVersion;
  float             PixelShader1xMaxValue;
  DWORD             DevCaps2;
  float             MaxNpatchTessellationLevel;
  DWORD             Reserved5;
  UINT              MasterAdapterOrdinal;
  UINT              AdapterOrdinalInGroup;
  UINT              NumberOfAdaptersInGroup;
  DWORD             DeclTypes;
  DWORD             NumSimultaneousRTs;
  DWORD             StretchRectFilterCaps;
  D3DVSHADERCAPS2_0 VS20Caps;
  D3DPSHADERCAPS2_0 PS20Caps;
  DWORD             VertexTextureFilterCaps;
  DWORD             MaxVShaderInstructionsExecuted;
  DWORD             MaxPShaderInstructionsExecuted;
  DWORD             MaxVertexShader30InstructionSlots;
  DWORD             MaxPixelShader30InstructionSlots;
} D3DCAPS9;

成员

DeviceType

类型: D3DDEVTYPE

D3DDEVTYPE 枚举类型的成员,该类型标识用于处理顶点的资源类型。

AdapterOrdinal

类型: UINT

创建此 Direct3D 设备的适配器。 此序号仅可用于传递给创建此 Direct3D 设备的 IDirect3D9 接口的方法。 始终可以通过调用 GetDirect3D 来检索 IDirect3D 接口

Caps

类型: DWORD

以下特定于驱动程序的功能。

Value 含义
D3DCAPS_READ_SCANLINE
显示硬件能够返回当前扫描行。
D3DCAPS_OVERLAY
显示驱动程序支持覆盖 DDI,用于验证覆盖功能。 有关覆盖 DDI 的详细信息,请参阅 覆盖 DDI
Direct3D 9 和 Direct3D 9Ex 之间的差异:

此标志仅在 Direct3D 9Ex 中可用。

 

Caps2

类型: DWORD

D3DCAPS2 中标识的特定于驱动程序的功能。

Caps3

类型: DWORD

D3DCAPS3 中标识的特定于驱动程序的功能。

PresentationIntervals

类型: DWORD

表示可用的演示文稿交换间隔的值的位掩码。

Value 含义
D3DPRESENT_INTERVAL_IMMEDIATE
驱动程序支持即时演示交换间隔。
D3DPRESENT_INTERVAL_ONE
驱动程序支持每个屏幕刷新的演示文稿交换间隔。
D3DPRESENT_INTERVAL_TWO
驱动程序支持每秒屏幕刷新的演示文稿交换间隔。
D3DPRESENT_INTERVAL_THREE
驱动程序支持第三次屏幕刷新的演示文稿交换间隔。
D3DPRESENT_INTERVAL_FOUR
驱动程序支持每四次屏幕刷新的演示文稿交换间隔。

CursorCaps

类型: DWORD

指示哪些硬件支持可用于游标的位掩码。 Direct3D 9 不定义 alpha 混合游标功能。

Value 含义
D3DCURSORCAPS_COLOR
硬件支持全色光标。 具体而言,此标志表示驱动程序在高分辨率模式下至少支持硬件颜色光标, (扫描行大于或等于 400) 。
D3DCURSORCAPS_LOWRES
硬件支持全色光标。 具体而言,此标志指示驱动程序在高分辨率和低分辨率模式下都支持硬件颜色光标, (扫描行小于 400) 。

DevCaps

类型: DWORD

标识设备功能的标志。

Value 含义
D3DDEVCAPS_CANBLTSYSTONONLOCAL
设备支持从系统内存纹理到非局部视频内存纹理的 blits。
D3DDEVCAPS_CANRENDERAFTERFLIP
设备可以在页面翻转后对呈现命令进行排队。 如果设置了此标志,则应用程序不会更改其行为;此功能意味着设备相对较快。
D3DDEVCAPS_DRAWPRIMITIVES2
设备至少可以支持符合 DirectX 5 的驱动程序。
D3DDEVCAPS_DRAWPRIMITIVES2EX
设备至少可以支持符合 DirectX 7 的驱动程序。
D3DDEVCAPS_DRAWPRIMTLVERTEX
设备导出 IDirect3DDevice9::D rawPrimitive 感知 hal。
D3DDEVCAPS_EXECUTESYSTEMMEMORY
设备可以使用系统内存中的执行缓冲区。
D3DDEVCAPS_EXECUTEVIDEOMEMORY
设备可以使用视频内存中的执行缓冲区。
D3DDEVCAPS_HWRASTERIZATION
设备具有用于场景光栅化的硬件加速。
D3DDEVCAPS_HWTRANSFORMANDLIGHT
设备可以支持硬件中的转换和照明。
D3DDEVCAPS_NPATCHES
设备支持 N 个修补程序。
D3DDEVCAPS_PUREDEVICE
设备可以支持硬件中的光栅化、转换、照明和底纹。
D3DDEVCAPS_QUINTICRTPATCHES
设备支持 quintic Bézier 曲线和 B-spline。
D3DDEVCAPS_RTPATCHES
设备支持矩形和三角形修补程序。
D3DDEVCAPS_RTPATCHHANDLEZERO
设置此设备功能后,硬件体系结构不需要缓存任何信息,并且未缓存的修补程序 (处理零) 将像缓存的修补程序一样高效绘制。 请注意,设置D3DDEVCAPS_RTPATCHHANDLEZERO并不意味着可以绘制带句柄零的修补程序。 无论是否设置此上限,始终都可以绘制句柄零补丁。
D3DDEVCAPS_SEPARATETEXTUREMEMORIES
设备正在从单独的内存池进行文本处理。
D3DDEVCAPS_TEXTURENONLOCALVIDMEM
设备可以从非本地视频内存中检索纹理。
D3DDEVCAPS_TEXTURESYSTEMMEMORY
设备可以从系统内存中检索纹理。
D3DDEVCAPS_TEXTUREVIDEOMEMORY
设备可以从设备内存中检索纹理。
D3DDEVCAPS_TLVERTEXSYSTEMMEMORY
设备可以使用系统内存中的缓冲区进行转换和点亮。
D3DDEVCAPS_TLVERTEXVIDEOMEMORY
设备可以使用视频内存中的缓冲区进行转换和点亮。

PrimitiveMiscCaps

类型: DWORD

其他驱动程序基元功能。 请参阅 D3DPMISCCAPS

RasterCaps

类型: DWORD

有关光栅绘图功能的信息。 此成员可以是以下一个或多个标志。

Value 含义
D3DPRASTERCAPS_ANISOTROPY
设备支持异性筛选。
D3DPRASTERCAPS_COLORPERSPECTIVE
设备可正确迭代颜色透视。
D3DPRASTERCAPS_DITHER
设备可以改进颜色分辨率。
D3DPRASTERCAPS_DEPTHBIAS
设备支持旧深度偏差。 有关真正的深度偏差,请参阅D3DPRASTERCAPS_SLOPESCALEDEPTHBIAS。
D3DPRASTERCAPS_FOGRANGE
设备支持基于范围的雾。 在基于范围的雾中,对象与查看器的距离用于计算雾效果,而不是对象 (的深度,即场景中的 z 坐标) 。
D3DPRASTERCAPS_FOGTABLE
设备通过引用包含已索引到给定像素深度的雾值查找表来计算雾值。
D3DPRASTERCAPS_FOGVERTEX
设备在照明操作期间计算雾值,并在光栅化期间内插雾值。
D3DPRASTERCAPS_MIPMAPLODBIAS
设备支持细节级别偏差调整。 这些偏差调整使应用程序能够使 mipmap 看起来比通常更清晰或更尖锐。 有关 mipmap 中详细程度偏差的详细信息,请参阅D3DSAMP_MIPMAPLODBIAS。
D3DPRASTERCAPS_MULTISAMPLE_TOGGLE
设备支持使用 D3DRS_MULTISAMPLEANTIALIAS) 在 IDirect3DDDevice9::BeginSceneIDirect3DDevice9::EndScene (之间切换多采样。
D3DPRASTERCAPS_SCISSORTEST
设备支持剪裁器测试。 请参阅 Scissor 测试 (Direct3D 9)
D3DPRASTERCAPS_SLOPESCALEDEPTHBIAS
设备执行基于斜率的深度偏差。 这与旧式样式深度偏差形成鲜明对比。
D3DPRASTERCAPS_WBUFFER
设备支持使用 w 进行深度缓冲。
D3DPRASTERCAPS_WFOG
设备支持基于 w 的雾。 指定透视投影矩阵时,将使用基于 W 的雾,但相交投影仍使用基于 z 的雾。 系统将包含 [3][4] 元素中的非零值的投影矩阵视为透视投影矩阵。
D3DPRASTERCAPS_ZBUFFERLESSHSR
设备可以执行隐藏表面删除 (HSR) ,而无需应用程序对多边形进行排序,而无需分配深度缓冲区。 这会为纹理留下更多的视频内存。 用于执行 HSR 的方法依赖于硬件,并且对应用程序是透明的。

如果未将深度缓冲区图面与呈现目标图面相关联,并且深度缓冲区比较测试 (启用,即当与 D3DRS_ZENABLE 枚举常量关联的状态值设置为 TRUE) ,则执行无 Z 缓冲区 HSR。

D3DPRASTERCAPS_ZFOG
设备支持基于 z 的雾。
D3DPRASTERCAPS_ZTEST
设备可以执行 z 测试操作。 这有效地呈现了基元,并指示是否呈现了任何 z 像素。

ZCmpCaps

类型: DWORD

Z 缓冲区比较功能。 此成员可以是以下一个或多个标志。

Value 含义
D3DPCMPCAPS_ALWAYS
始终通过 z-test。
D3DPCMPCAPS_EQUAL
如果新 z 等于当前 z,则通过 z-test。
D3DPCMPCAPS_GREATER
如果新 z 大于当前 z,则通过 z-test。
D3DPCMPCAPS_GREATEREQUAL
如果新 z 大于或等于当前 z,则通过 z-test。
D3DPCMPCAPS_LESS
如果新 z 小于当前 z,则通过 z-test。
D3DPCMPCAPS_LESSEQUAL
如果新 z 小于或等于当前 z,则通过 z-test。
D3DPCMPCAPS_NEVER
始终失败 z-test。
D3DPCMPCAPS_NOTEQUAL
如果新 z 不等于当前 z,则通过 z-test。

SrcBlendCaps

类型: DWORD

源混合功能。 此成员可以是以下一个或多个标志。 (源和目标的 RGBA 值由下标 s 和 d.) 指示

Value 含义
D3DPBLENDCAPS_BLENDFACTOR
驱动程序支持D3DBLEND_BLENDFACTOR和D3DBLEND_INVBLENDFACTOR。 请参阅 D3DBLEND
D3DPBLENDCAPS_BOTHINVSRCALPHA
源混合因子 (1 - As、 1 - As、1 - As、1 - As) 和目标混合因子 (As、As、As、As) ;覆盖目标混合选择。
D3DPBLENDCAPS_BOTHSRCALPHA
驱动程序支持D3DBLEND_BOTHSRCALPHA混合模式。 (此混合模式已过时。有关详细信息,请参阅 D3DBLEND.)
D3DPBLENDCAPS_DESTALPHA
混合因子 (Ad、Ad、A d、Ad) 。
D3DPBLENDCAPS_DESTCOLOR
混合因子 (Rd、Gd、B d、Ad) 。
D3DPBLENDCAPS_INVDESTALPHA
混合因子 (1 - Ad、1 - Ad、1 - Ad、1 - Ad) 。
D3DPBLENDCAPS_INVDESTCOLOR
混合因子 (1 - Rd、1 - Gd、1 - Bd、1 - Ad) 。
D3DPBLENDCAPS_INVSRCALPHA
混合因子 (1 - As, 1 - As, 1 - As, 1 - As, 1 - As) 。
D3DPBLENDCAPS_INVSRCCOLOR
混合因子 (1 - Rs, 1 - Gs, 1 - Bs, 1 - As) 。
D3DPBLENDCAPS_INVSRCCOLOR2
Blend factor (1 - PSOutColor[1]r, 1 - PSOutColor[1]g, 1 - PSOutColor[1]b, not used) ) . 请参阅 呈现目标混合
Direct3D 9 和 Direct3D 9Ex 之间的差异:

此标志仅在 Direct3D 9Ex 中可用。

 
D3DPBLENDCAPS_ONE
混合因子 (1、1、1、1) 。
D3DPBLENDCAPS_SRCALPHA
Blend factor (As、As、As、As、As) 。
D3DPBLENDCAPS_SRCALPHASAT
混合因子 (f、f、f、1) ;f = min (As, 1 -A d) 。
D3DPBLENDCAPS_SRCCOLOR
Blend factor (Rs、Gs、Bs 和 As) 。
D3DPBLENDCAPS_SRCCOLOR2
Blend factor (PSOutColor[1]r, PSOutColor[1]g, PSOutColor[1]b, not use) . 请参阅 呈现目标混合
Direct3D 9 和 Direct3D 9Ex 之间的差异:

此标志仅在 Direct3D 9Ex 中可用。

 
D3DPBLENDCAPS_ZERO
混合因子 (0、0、0、0) 。

DestBlendCaps

类型: DWORD

目标混合功能。 此成员可以是为 SrcBlendCaps 成员定义的相同功能。

AlphaCmpCaps

类型: DWORD

Alpha 测试比较功能。 此成员可以包含为 ZCmpCaps 成员定义的相同功能标志。 如果此成员仅包含D3DPCMPCAPS_ALWAYS功能或仅包含D3DPCMPCAPS_NEVER功能,驱动程序不支持 alpha 测试。 否则,标志将标识 alpha 测试支持的各个比较。

ShadeCaps

类型: DWORD

底纹操作功能。 通常,假设设备完全支持给定命令,则它支持 在 D3DSHADEMODE 枚举类型) 中指定的D3DSHADE_FLAT模式 (。 此标志指定驱动程序是否可以支持 Gouraud 着色以及是否支持 alpha 颜色组件。 不支持 alpha 组件时,生成的颜色的 alpha 值隐式为 255。 这是最大可能的 alpha (,即 alpha 分量处于完全强度) 。

三角形的颜色、反射突出显示、雾和 alpha 内插器各具有应用程序可用于了解设备驱动程序如何实现的功能标志。

此成员可以是以下一个或多个标志。

Value 含义
D3DPSHADECAPS_ALPHAGOURAUDBLEND
设备可以支持 Gouraud 混合透明度的 alpha 组件, (D3DSHADEMODE 枚举类型) 的D3DSHADE_GOURAUD状态。 在此模式下,基元的 alpha 颜色分量以顶点提供,并与其他颜色组件一起内插在人脸上。
D3DPSHADECAPS_COLORGOURAUDRGB
设备可以支持彩色 Gouraud 底纹。 在此模式下,每顶点颜色组件 (红色、绿色和蓝色) 内插在三角形脸上。
D3DPSHADECAPS_FOGGOURAUD
设备可以在 Gouraud 底纹模式下支持雾。
D3DPSHADECAPS_SPECULARGOURAUDRGB
设备支持高乌德阴影的反射突出显示。

TextureCaps

类型: DWORD

其他纹理映射功能。 此成员可以是以下一个或多个标志。

Value 含义
D3DPTEXTURECAPS_ALPHA
支持纹理像素中的 Alpha。
D3DPTEXTURECAPS_ALPHAPALETTE
设备可以从纹理调色板绘制 alpha。
D3DPTEXTURECAPS_CUBEMAP
支持多维数据集纹理。
D3DPTEXTURECAPS_CUBEMAP_POW2
设备要求多维数据集纹理映射具有指定为两个幂的维度。
D3DPTEXTURECAPS_MIPCUBEMAP
设备支持 mipmapped 多维数据集纹理。
D3DPTEXTURECAPS_MIPMAP
设备支持误用纹理。
D3DPTEXTURECAPS_MIPVOLUMEMAP
设备支持误用卷纹理。
D3DPTEXTURECAPS_NONPOW2CONDITIONAL
此外还设置了D3DPTEXTURECAPS_POW2,有条件地支持将 2D 纹理与不具有两个幂的维度一起使用。 如果满足以下所有要求,公开此功能的设备可以使用此类纹理。
  • 纹理阶段的纹理寻址模式设置为D3DTADDRESS_CLAMP。
  • (D3DRS_WRAP n 设置为 0 ) 禁用纹理阶段的纹理包装。
  • mipmapping 未使用, (仅使用放大镜) 。
  • 纹理格式 不得通过D3DFMT_DXT5 D3DFMT_DXT1。

如果未设置此标志,并且未设置D3DPTEXTURECAPS_POW2,则为具有两个维度的 2D 纹理提供无条件支持。

不能在基于着色器计算 ((如 bem - ps 和 texm3x3)的着色器计算(如 bem - pstexm3x3) 的阶段设置两者的力量的纹理, 像素着色器版本 1_0 到 1_3) 。 例如,这些纹理可用于存储将馈送到纹理读取中的颠簸,但不能存储在 texbem - pstexbeml - pstexm3x3spec - ps 中使用的环境映射。 这意味着,不能使用着色器内计算的纹理坐标处理或采样具有两个维度的纹理。 这种类型的操作称为依赖读取,不能对这些类型的纹理执行。

D3DPTEXTURECAPS_NOPROJECTEDBUMPENV
设备不支持可编程和固定函数着色器中的投影凸起环境查找操作。
D3DPTEXTURECAPS_PERSPECTIVE
支持透视更正文本。
D3DPTEXTURECAPS_POW2
如果未设置D3DPTEXTURECAPS_NONPOW2CONDITIONAL,则所有纹理必须具有指定为两个幂的宽度和高度。 此要求不适用于多维数据集纹理或卷纹理。

如果还设置了D3DPTEXTURECAPS_NONPOW2CONDITIONAL,则有条件地支持将 2D 纹理与不具有两个幂的维度一起使用。 请参阅D3DPTEXTURECAPS_NONPOW2CONDITIONAL说明。

如果未设置此标志,并且未设置D3DPTEXTURECAPS_NONPOW2CONDITIONAL,则为具有两个维度的 2D 纹理提供无条件支持。

D3DPTEXTURECAPS_PROJECTED
支持D3DTTFF_PROJECTED纹理转换标志。 应用后,设备将转换后的纹理坐标除以最后一个纹理坐标。 如果存在此功能,则每个像素会出现投影除法。 如果此功能不存在,但投影除法仍需要进行,则 Direct3D 运行时按顶点执行。
D3DPTEXTURECAPS_SQUAREONLY
所有纹理必须为正方形。
D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE
在内插之前,纹理索引不会按纹理大小缩放。
D3DPTEXTURECAPS_VOLUMEMAP
设备支持卷纹理。
D3DPTEXTURECAPS_VOLUMEMAP_POW2
设备要求卷纹理映射具有指定为两个幂的维度。

TextureFilterCaps

类型: DWORD

纹理的纹理筛选功能。 每阶段筛选功能反映执行多纹理混合时纹理阶段支持哪些筛选模式。 此成员可以是 D3DPTFILTERCAPS 中定义的每阶段纹理筛选标志的任意组合。

CubeTextureFilterCaps

类型: DWORD

多维数据集纹理的纹理筛选功能。 每阶段筛选功能反映执行多纹理混合时纹理阶段支持哪些筛选模式。 此成员可以是 D3DPTFILTERCAPS 中定义的每阶段纹理筛选标志的任意组合。

VolumeTextureFilterCaps

类型: DWORD

卷纹理的纹理筛选功能。 每阶段筛选功能反映执行多纹理混合时纹理阶段支持哪些筛选模式。 此成员可以是 D3DPTFILTERCAPS 中定义的每阶段纹理筛选标志的任意组合。

TextureAddressCaps

类型: DWORD

纹理对象的纹理寻址功能。 此成员可以是以下一个或多个标志。

Value 含义
D3DPTADDRESSCAPS_BORDER
设备支持将 [0.0, 1.0] 以外的坐标设置为边框颜色,如D3DSAMP_BORDERCOLOR纹理阶段状态所指定。
D3DPTADDRESSCAPS_CLAMP
设备可以将纹理固定到地址。
D3DPTADDRESSCAPS_INDEPENDENTUV
设备可以分隔纹理寻址模式和纹理的 v 坐标。 此功能对应于D3DSAMP_ADDRESSU和D3DSAMP_ADDRESSV呈现状态值。
D3DPTADDRESSCAPS_MIRROR
设备可以将纹理镜像到地址。
D3DPTADDRESSCAPS_MIRRORONCE
设备可以采用纹理坐标的绝对值 (,从而镜像约 0) ,然后固定到最大值。
D3DPTADDRESSCAPS_WRAP
设备可以将纹理包装到地址。

VolumeTextureAddressCaps

类型: DWORD

卷纹理的纹理寻址功能。 此成员可以是为 TextureAddressCaps 成员定义的一个或多个标志。

LineCaps

类型: DWORD

定义线条绘制基元的功能。

Value 含义
D3DLINECAPS_ALPHACMP
支持 alpha-test 比较。
D3DLINECAPS_ANTIALIAS
支持抗锯齿线。
D3DLINECAPS_BLEND
支持源混合。
D3DLINECAPS_FOG
支持雾。
D3DLINECAPS_TEXTURE
支持纹理映射。
D3DLINECAPS_ZTEST
支持 z 缓冲区比较。

MaxTextureWidth

类型: DWORD

此设备的纹理宽度上限。

MaxTextureHeight

类型: DWORD

此设备的最大纹理高度。

MaxVolumeExtent

类型: DWORD

卷纹理的三个维度中的任何一个 (宽度、高度和深度) 的最大值。

MaxTextureRepeat

类型: DWORD

此数字表示后期规范化纹理坐标的整数位的最大范围。 纹理坐标存储为 32 位带符号整数,使用 27 位存储整数部分,以及浮点分数的 5 位。 最大整数索引 2ー⁷ 用于确定最大纹理坐标,具体取决于硬件执行纹理坐标缩放的方式。

某些硬件报告上限D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE。 在这种情况下,设备会按纹理大小延迟缩放纹理坐标,直到内插和应用纹理地址模式后,纹理可以包装的次数由 MaxTextureRepeat 中的整数值提供。

不太可取的是,未设置某些硬件D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE,并且设备使用内插之前) 的最高细节级别 (按纹理大小缩放纹理坐标。 这会限制纹理可以包装到 MaxTextureRepeat /纹理大小的次数。

例如,假设 MaxTextureRepeat 等于 32k,纹理的大小为 4k。 如果硬件集D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE,则可以包装纹理的次数等于 MaxTextureRepeat,在本示例中为 32k。 否则,可以包装纹理的次数等于 MaxTextureRepeat 除以纹理大小,在本示例中为 32k/4k。

MaxTextureAspectRatio

类型: DWORD

硬件支持的最大纹理纵横比,通常是 2 的电源。

MaxAnisotropy

类型: DWORD

D3DSAMP_MAXANISOTROPY纹理阶段状态的最大有效值。

MaxVertexW

类型: float

设备支持的最大基于 W 的深度值。

GuardBandLeft

类型: float

防护带剪辑区域的屏幕空间坐标。 此矩形内部的坐标,但视区矩形外部的坐标会自动剪裁。

GuardBandTop

类型: float

防护带剪辑区域的屏幕空间坐标。 此矩形内部的坐标,但视区矩形外部的坐标会自动剪裁。

GuardBandRight

类型: float

防护带剪辑区域的屏幕空间坐标。 此矩形内部的坐标,但视区矩形外部的坐标会自动剪裁。

GuardBandBottom

类型: float

防护带剪辑区域的屏幕空间坐标。 此矩形内部的坐标,但视区矩形外部的坐标会自动剪裁。

ExtentsAdjust

类型: float

要向外调整盘区矩形以容纳抗锯齿内核的像素数。

StencilCaps

类型: DWORD

指定支持的模具缓冲区操作的标志。 假定模具操作对所有三个模具缓冲区操作都有效呈现状态 (D3DRS_STENCILFAIL、D3DRS_STENCILPASS和D3DRS_STENCILZFAIL) 。

有关详细信息,请参阅 D3DSTENCILCAPS

FVFCaps

类型: DWORD

灵活的顶点格式功能。

Value 含义
D3DFVFCAPS_DONOTSTRIPELEMENTS
最好不去除顶点元素。 也就是说,如果顶点格式包含未与当前呈现状态一起使用的元素,则无需重新生成顶点。 如果此功能标志不存在,则从顶点格式剥离多余的元素可提供更好的性能。
D3DFVFCAPS_PSIZE
点大小由呈现状态或顶点数据确定。 如果使用 FVF,点大小可能来自顶点声明中的点大小数据。 否则,点大小由呈现状态D3DRS_POINTSIZE决定。 如果应用程序 (呈现状态和顶点声明) 提供点大小,则顶点数据将替代呈现状态数据。
D3DFVFCAPS_TEXCOORDCOUNTMASK
屏蔽 FVFCaps 的低字。 这些位(强制转换为 WORD 数据类型)描述了设备可用于多个纹理混合的纹理坐标集总数。 (最多可以使用 8 个纹理坐标集用于任何顶点,但设备只能使用指定的纹理坐标集数进行混合。)

TextureOpCaps

类型: DWORD

描述此设备支持的纹理操作的标志的组合。 定义了以下标志。

Value 含义
D3DTEXOPCAPS_ADD
支持D3DTOP_ADD纹理混合操作。
D3DTEXOPCAPS_ADDSIGNED
支持D3DTOP_ADDSIGNED纹理混合操作。
D3DTEXOPCAPS_ADDSIGNED2X
支持D3DTOP_ADDSIGNED2X纹理混合操作。
D3DTEXOPCAPS_ADDSMOOTH
支持D3DTOP_ADDSMOOTH纹理混合操作。
D3DTEXOPCAPS_BLENDCURRENTALPHA
支持D3DTOP_BLENDCURRENTALPHA纹理混合操作。
D3DTEXOPCAPS_BLENDDIFFUSEALPHA
支持D3DTOP_BLENDDIFFUSEALPHA纹理混合操作。
D3DTEXOPCAPS_BLENDFACTORALPHA
支持D3DTOP_BLENDFACTORALPHA纹理混合操作。
D3DTEXOPCAPS_BLENDTEXTUREALPHA
支持D3DTOP_BLENDTEXTUREALPHA纹理混合操作。
D3DTEXOPCAPS_BLENDTEXTUREALPHAPM
支持D3DTOP_BLENDTEXTUREALPHAPM纹理混合操作。
D3DTEXOPCAPS_BUMPENVMAP
支持D3DTOP_BUMPENVMAP纹理混合操作。
D3DTEXOPCAPS_BUMPENVMAPLUMINANCE
支持D3DTOP_BUMPENVMAPLUMINANCE纹理混合操作。
D3DTEXOPCAPS_DISABLE
支持D3DTOP_DISABLE纹理混合操作。
D3DTEXOPCAPS_DOTPRODUCT3
支持D3DTOP_DOTPRODUCT3纹理混合操作。
D3DTEXOPCAPS_LERP
支持D3DTOP_LERP纹理混合操作。
D3DTEXOPCAPS_MODULATE
支持D3DTOP_MODULATE纹理混合操作。
D3DTEXOPCAPS_MODULATE2X
支持D3DTOP_MODULATE2X纹理混合操作。
D3DTEXOPCAPS_MODULATE4X
支持D3DTOP_MODULATE4X纹理混合操作。
D3DTEXOPCAPS_MODULATEALPHA_ADDCOLOR
支持D3DTOP_MODULATEALPHA_ADDCOLOR纹理混合操作。
D3DTEXOPCAPS_MODULATECOLOR_ADDALPHA
支持D3DTOP_MODULATECOLOR_ADDALPHA纹理混合操作。
D3DTEXOPCAPS_MODULATEINVALPHA_ADDCOLOR
支持D3DTOP_MODULATEINVALPHA_ADDCOLOR纹理混合操作。
D3DTEXOPCAPS_MODULATEINVCOLOR_ADDALPHA
支持D3DTOP_MODULATEINVCOLOR_ADDALPHA纹理混合操作。
D3DTEXOPCAPS_MULTIPLYADD
支持D3DTOP_MULTIPLYADD纹理混合操作。
D3DTEXOPCAPS_PREMODULATE
支持D3DTOP_PREMODULATE纹理混合操作。
D3DTEXOPCAPS_SELECTARG1
支持D3DTOP_SELECTARG1纹理混合操作。
D3DTEXOPCAPS_SELECTARG2
支持D3DTOP_SELECTARG2纹理混合操作。
D3DTEXOPCAPS_SUBTRACT
支持D3DTOP_SUBTRACT纹理混合操作。

MaxTextureBlendStages

类型: DWORD

固定函数管道中支持的最大纹理混合阶段数。 此值是可用的混合器数。 在可编程像素管道中,这对应于像素着色器指令使用的唯一纹理寄存器数。

MaxSimultaneousTextures

类型: DWORD

可同时绑定到固定函数管道采样器阶段的最大纹理数。 如果同一纹理绑定到两个采样器阶段,它将计算为两个纹理。

此值在可编程管道中没有意义,其中采样器阶段数由每个像素着色器版本确定。 每个像素着色器版本还确定纹理声明指令的数目。 请参阅 像素着色器

VertexProcessingCaps

类型: DWORD

顶点处理功能。 对于给定的物理设备,此功能可能因提供给 CreateDevice 的参数而异。 请参阅 D3DVTXPCAPS

MaxActiveLights

类型: DWORD

可同时处于活动状态的最大灯数。 对于给定的物理设备,此功能可能因提供给 CreateDevice 的参数而异。

MaxUserClipPlanes

类型: DWORD

支持的最大用户定义的剪裁平面数。 此成员可以是 0。 对于给定的物理设备,此功能可能因提供给 CreateDevice 的参数而异。

MaxVertexBlendMatrices

类型: DWORD

执行多矩阵混合时,此设备可以应用的最大矩阵数。 对于给定的物理设备,此功能可能因提供给 CreateDevice 的参数而异。

MaxVertexBlendMatrixIndex

类型: DWORD

DWORD 值,该值指定可以使用每个顶点索引编制索引的最大矩阵索引。 矩阵数为 MaxVertexBlendMatrixIndex + 1,即矩阵调色板的大小。 如果正态存在于需要混合用于照明的顶点数据中,则矩阵数是此功能标志所指定的数字的一半。 如果 MaxVertexBlendMatrixIndex 设置为零,则驱动程序不支持索引顶点混合。 如果此值不是零,则索引的有效范围通过 MaxVertexBlendMatrixIndex 为零。

MaxVertexBlendMatrixIndex 的零值指示驱动程序不支持索引矩阵。

使用软件顶点处理时,可以使用 256 个矩阵进行索引顶点混合,与或不正常混合。

对于给定的物理设备,此功能可能因提供给 CreateDevice 的参数而异。

MaxPointSize

类型: float

点基元的最大大小。 如果设置为 1.0f,则设备不支持点大小控制。 范围大于或等于 1.0f。

MaxPrimitiveCount

类型: DWORD

每个 DrawPrimitive 调用的最大基元数。 存在两种情况:

  • 如果 MaxPrimitiveCount 不等于0xffff,则可以在每个绘图调用中最多绘制 MaxPrimitiveCount 基元。
  • 但是,如果 MaxPrimitiveCount 等于 0xffff,则仍可以在大多数 MaxPrimitiveCount 基元处绘制,但你可能也不再使用 MaxPrimitiveCount 唯一顶点 (,因为每个基元都可以使用三个不同的顶点) 。

MaxVertexIndex

类型: DWORD

硬件顶点处理支持的最大索引大小。 可以创建 32 位索引缓冲区;但是,除非此值大于0x0000FFFF,否则无法使用索引缓冲区呈现。

MaxStreams

类型: DWORD

SetStreamSource 的最大并发数据流数。 有效范围为 1 到 16。 请注意,如果此值为 0,则驱动程序不是 Direct3D 9 驱动程序。

MaxStreamStride

类型: DWORD

SetStreamSource 的最大步幅。

VertexShaderVersion

类型: DWORD

表示顶点着色器主版本和子版本的两个数字。 有关每个顶点着色器版本支持的说明的详细信息,请参阅版本1_x版本 2_0、版本 2_0 扩展版或版本 3_0

MaxVertexShaderConst

类型: DWORD

为常量保留的 顶点着色器顶点着色器寄存器 数。

PixelShaderVersion

类型: DWORD

表示像素着色器主版本和子版本的两个数字。 有关每个像素着色器版本支持的说明的详细信息,请参阅版本1_x版本 2_0、版本 2_0 扩展版或版本 3_0

PixelShader1xMaxValue

类型: float

像素着色器算术组件的最大值。 此值指示像素颜色混合操作支持的内部值范围。 在报告其范围内,实现必须允许数据通过未经修改的像素处理, (未压缩) 传递。 通常,此成员的值是绝对值。 例如,1.0 表示范围为 -1.0 到 1,8.0 表示范围为 -8.0 到 8.0。 对于支持像素着色器的任何硬件,该值必须为 >1.0。

DevCaps2

类型: DWORD

用于自适应分割的设备驱动程序功能。 有关详细信息,请参阅 D3DDEVCAPS2

MaxNpatchTessellationLevel

TBD

Reserved5

TBD

MasterAdapterOrdinal

类型: UINT

此数字指示此从属设备的主机。 此数字取自与适配器值相同的空间。

对于多头支持,一个头将表示主头,同一张卡上的所有其他头将被表示为从属头。 如果系统中存在多个多头适配器,则主适配器及其从属节点称为组。

AdapterOrdinalInGroup

类型: UINT

此数字指示 API 引用头的顺序。 主适配器的值始终为 0。 这些值不对应于适配器序号。 它们仅适用于组中的头。

NumberOfAdaptersInGroup

类型: UINT

仅当主) 时,此适配器组中的适配器数 (。 对于常规适配器,这为 1。 对于多头卡的主适配器,该值大于 1。 对于多头卡的从属适配器,该值将为 0。 每个卡最多可以有一个主控形状,但可能有许多从属。

DeclTypes

类型: DWORD

顶点声明中包含的一个或多个数据类型的组合。 请参阅 D3DDTCAPS

NumSimultaneousRTs

类型: DWORD

同时呈现目标的数目。 此数字必须至少为一个。

StretchRectFilterCaps

类型: DWORD

描述 StretchRect 支持的操作的常量的组合。 可在此字段中设置的标志包括:

返回的常量 描述
D3DPTFILTERCAPS_MINFPOINT 设备支持用于缩小矩形的点样本筛选。 通过使用 D3DTEXF_POINT 调用 StretchRect 来请求此筛选器类型。
D3DPTFILTERCAPS_MAGFPOINT 设备支持用于放大矩形的点样本筛选。 通过使用 D3DTEXF_POINT 调用 StretchRect 来请求此筛选器类型。
D3DPTFILTERCAPS_MINFLINEAR 设备支持对缩小矩形进行双线性内插筛选。 通过使用 D3DTEXF_LINEAR 调用 StretchRect 来请求此筛选器类型。
D3DPTFILTERCAPS_MAGFLINEAR 设备支持用于放大矩形的双线性内插筛选。 通过使用 D3DTEXF_LINEAR 调用 StretchRect 来请求此筛选器类型。
 

有关详细信息,请参阅 D3DTEXTUREFILTERTYPED3DTEXTUREFILTERTYPE

VS20Caps

类型: D3DVSHADERCAPS2_0

设备支持顶点着色器版本 2_0 扩展功能。 请参阅 D3DVSHADERCAPS2_0

PS20Caps

类型: D3DPSHADERCAPS2_0

设备支持像素着色器版本 2_0 扩展功能。 请参阅 D3DPSHADERCAPS2_0

VertexTextureFilterCaps

类型: DWORD

设备支持顶点着色器纹理筛选器功能。 请参阅 D3DPTFILTERCAPS

MaxVShaderInstructionsExecuted

类型: DWORD

使用流控制时可以运行的最大顶点着色器指令数。 可以编程的最大指令数是 MaxVertexShader30InstructionSlots。

MaxPShaderInstructionsExecuted

类型: DWORD

使用流控制时可以运行的最大像素着色器指令数。 可以编程的最大指令数是 MaxPixelShader30InstructionSlots。

MaxVertexShader30InstructionSlots

类型: DWORD

支持的最大顶点着色器指令槽数。 可在此上限上设置的最大值为 32768。 支持vs_3_0的设备至少需要支持 512 个指令槽。

MaxPixelShader30InstructionSlots

类型: DWORD

支持的最大像素着色器指令槽数。 可在此上限上设置的最大值为 32768。 支持ps_3_0的设备至少需要支持 512 个指令槽。

注解

MaxTextureBlendStages 和 MaxSimultaneousTextures 成员看起来可能相似,但它们包含不同的信息。 MaxTextureBlendStages 成员包含当前设备支持的纹理混合阶段总数,MaxSimultaneousTextures 成员描述了这些阶段中有多少阶段可以使用 SetTexture 方法绑定到这些阶段。

当驱动程序填充此结构时,它可以为执行缓冲区功能设置值,即使用于检索功能 ((如 IDirect3DDevice9) )的接口也不支持执行缓冲区。

一般情况下,如果使用纹理,然后在场景中对其进行修改,则可能会出现性能问题。 确保除非绝对必要,否则不会逐出当前 BeginSceneEndScene 块中使用的纹理。 如果场景中的纹理使用率非常高,则结果未定义。 当修改在场景中使用的纹理并且没有可用的备用纹理内存时,将发生这种情况。 对于此类系统,z 缓冲区的内容在 EndScene 中变为无效。 应用程序不应在 BeginScene/EndScene 对内的此类硬件上或从后端缓冲区调用 UpdateSurface 。 此外,如果设置了D3DPRASTERCAPS_ZBUFFERLESSHSR功能标志,则应用程序不应尝试访问 z 缓冲区。 最后,应用程序不应锁定 Back 缓冲区或 BeginScene/EndScene 对内的 z 缓冲区。

Direct3D 9 不支持以下有关误用纹理的标志。

  • D3DPTFILTERCAPS_LINEAR
  • D3DPTFILTERCAPS_LINEARMIPLINEAR
  • D3DPTFILTERCAPS_LINEARMIPNEAREST
  • D3DPTFILTERCAPS_MIPNEAREST
  • D3DPTFILTERCAPS_NEAREST

要求

   
标头 d3d9caps.h

另请参阅

Direct3D 结构

GetDeviceCaps