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 来检索 IDirect3D9 接口。

Caps

类型: DWORD

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

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

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

 

Caps2

类型: DWORD

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

Caps3

类型: DWORD

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

PresentationIntervals

类型: DWORD

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

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

CursorCaps

类型: DWORD

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

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

DevCaps

类型: DWORD

标识设备功能的标志。

“值” 含义
D3DDEVCAPS_CANBLTSYSTONONLOCAL
设备支持从系统内存纹理到非局部视频内存纹理的 blit。
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
设备支持昆特贝塞尔曲线和 B 样条曲线。
D3DDEVCAPS_RTPATCHES
设备支持矩形和三角补丁。
D3DDEVCAPS_RTPATCHHANDLEZERO
设置此设备功能后,硬件体系结构不需要缓存任何信息,并且未缓存的修补程序 (处理零) 将像绘制缓存的修补程序一样高效。 请注意,设置D3DDEVCAPS_RTPATCHHANDLEZERO并不意味着可以绘制句柄为零的修补程序。 无论是否设置了此上限,始终都可以绘制句柄零补丁。
D3DDEVCAPS_SEPARATETEXTUREMEMORIES
设备正在从单独的内存池进行纹理处理。
D3DDEVCAPS_TEXTURENONLOCALVIDMEM
设备可以从非本地视频内存中检索纹理。
D3DDEVCAPS_TEXTURESYSTEMMEMORY
设备可以从系统内存中检索纹理。
D3DDEVCAPS_TEXTUREVIDEOMEMORY
设备可以从设备内存中检索纹理。
D3DDEVCAPS_TLVERTEXSYSTEMMEMORY
设备可以将系统内存中的缓冲区用于转换的顶点和点亮顶点。
D3DDEVCAPS_TLVERTEXVIDEOMEMORY
设备可以将视频内存中的缓冲区用于转换和点亮顶点。

PrimitiveMiscCaps

类型: DWORD

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

RasterCaps

类型: DWORD

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

含义
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) 在 IDirect3DDevice9::BeginSceneIDirect3DDevice9::EndScene (之间切换打开和关闭多重采样。
D3DPRASTERCAPS_SCISSORTEST
设备支持剪刀测试。 请参阅 剪刀测试 (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 缓冲区比较功能。 此成员可以是以下一个或多个标志。

含义
D3DPCMPCAPS_ALWAYS
始终通过 z 测试。
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 测试。
D3DPCMPCAPS_NOTEQUAL
如果新的 z 不等于当前 z,则通过 z-test。

SrcBlendCaps

类型: DWORD

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

含义
D3DPBLENDCAPS_BLENDFACTOR
驱动程序同时支持D3DBLEND_BLENDFACTOR和D3DBLEND_INVBLENDFACTOR。 请参阅 D3DBLEND
D3DPBLENDCAPS_BOTHINVSRCALPHA
源混合因子为 (1 - As、1 - As、1 - As、1 - As) 和目标混合因子 (As、As、As) ;将重写目标混合选择。
D3DPBLENDCAPS_BOTHSRCALPHA
驱动程序支持D3DBLEND_BOTHSRCALPHA混合模式。 (此混合模式已过时。有关详细信息,请参阅 D3DBLEND.)
D3DPBLENDCAPS_DESTALPHA
混合因子为 (Ad、Ad、Ad、Ad) 。
D3DPBLENDCAPS_DESTCOLOR
混合因子 (Rd、Gd、Bd、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
混合因子 (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
混合因子 (As、As、As、As) 。
D3DPBLENDCAPS_SRCALPHASAT
混合因子为 (f、f、f、1) ;f = min (As,1 - Ad) 。
D3DPBLENDCAPS_SRCCOLOR
混合因子为 (Rs、Gs、Bs、As) 。
D3DPBLENDCAPS_SRCCOLOR2
混合因子 (PSOutColor[1]r、PSOutColor[1]g、PSOutColor[1]b,未) 使用。 请参阅 呈现目标混合
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 内插都有功能标志,应用程序可以使用这些功能标志来了解设备驱动程序如何实现它们。

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

含义
D3DPSHADECAPS_ALPHAGOURAUDBLEND
对于 D3DSHADEMODE 枚举类型) , (D3DSHADEMODE 的D3DSHADE_GOURAUD状态,设备可以支持 Gouraud 混合透明度的 alpha 分量。 在此模式下,基元的 alpha 颜色分量在顶点处提供,并与其他颜色分量一起内插到人脸上。
D3DPSHADECAPS_COLORGOURAUDRGB
设备可以支持彩色 Gouraud 着色。 在此模式下,每个顶点的颜色分量 (红色、绿色和蓝色) 内插在三角形面上。
D3DPSHADECAPS_FOGGOURAUD
设备可以在 Gouraud 着色模式下支持雾。
D3DPSHADECAPS_SPECULARGOURAUDRGB
设备支持高光点的 Gouraud 着色。

TextureCaps

类型: DWORD

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

含义
D3DPTEXTURECAPS_ALPHA
支持以纹理像素表示的 Alpha。
D3DPTEXTURECAPS_ALPHAPALETTE
设备可以从纹理调色板绘制 alpha。
D3DPTEXTURECAPS_CUBEMAP
支持立方体纹理。
D3DPTEXTURECAPS_CUBEMAP_POW2
设备要求多维数据集纹理贴图的维度指定为 2 的幂。
D3DPTEXTURECAPS_MIPCUBEMAP
设备支持误贴立方体纹理。
D3DPTEXTURECAPS_MIPMAP
设备支持错误覆盖的纹理。
D3DPTEXTURECAPS_MIPVOLUMEMAP
设备支持未覆盖的卷纹理。
D3DPTEXTURECAPS_NONPOW2CONDITIONAL
还设置了D3DPTEXTURECAPS_POW2,有条件地支持使用维度不是 2 的 2D 纹理。 如果满足以下所有要求,公开此功能的设备可以使用此类纹理。
  • 纹理阶段的纹理寻址模式设置为D3DTADDRESS_CLAMP。
  • (n 设置为 0) D3DRS_WRAP ,则禁用纹理阶段的纹理环绕。
  • mipming 未使用 (仅) 使用放大镜。
  • 不得通过 D3DFMT_DXT5 D3DFMT_DXT1 纹理格式。

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

不能在基于着色器计算 ((如像素着色器版本 1_0 到 1_3) 中的 bem - pstexm3x3 - ps 指令)读取的阶段设置不是 2 次幂的纹理。 例如,这些纹理可用于存储将馈送到纹理读取中的凹凸,但不能存储 texbem - pstexbeml - pstexm3x3spec - ps 中使用的环境映射。 这意味着,无法使用着色器中计算的纹理坐标来寻址或采样维度不是 2 的纹理。 这种类型的操作称为依赖读取,不能对这些类型的纹理执行。

D3DPTEXTURECAPS_NOPROJECTEDBUMPENV
设备不支持可编程和固定函数着色器中的投影凹凸环境查找操作。
D3DPTEXTURECAPS_PERSPECTIVE
支持透视更正纹理。
D3DPTEXTURECAPS_POW2
如果未设置D3DPTEXTURECAPS_NONPOW2CONDITIONAL,则所有纹理的宽度和高度都必须指定为 2 的幂。 此要求不适用于立方体纹理或体积纹理。

如果还设置了D3DPTEXTURECAPS_NONPOW2CONDITIONAL,则有条件地支持使用维度不是 2 的 2D 纹理。 请参阅D3DPTEXTURECAPS_NONPOW2CONDITIONAL说明。

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

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

TextureFilterCaps

类型: DWORD

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

CubeTextureFilterCaps

类型: DWORD

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

VolumeTextureFilterCaps

类型: DWORD

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

TextureAddressCaps

类型: DWORD

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

含义
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

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

含义
D3DLINECAPS_ALPHACMP
支持 alpha 测试比较。
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

灵活的顶点格式功能。

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

TextureOpCaps

类型: DWORD

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

含义
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

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

MaxActiveLights

类型: DWORD

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

MaxUserClipPlanes

类型: DWORD

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

MaxVertexBlendMatrices

类型: DWORD

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

MaxVertexBlendMatrixIndex

类型: DWORD

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

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

使用软件顶点处理时,可以使用 256 个矩阵进行索引顶点混合,无论是否使用正常混合。

对于给定的物理设备,此功能可能因 Direct3D 设备而异,具体取决于提供给 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

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

MaxVertexShaderConst

类型: DWORD

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

PixelShaderVersion

类型: DWORD

表示像素着色器main和子版本的两个数字。 有关每个像素着色器版本支持的说明的详细信息,请参阅 版本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

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

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 方法可将纹理绑定到这些阶段中的多少个阶段。

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

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

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

  • D3DPTFILTERCAPS_LINEAR
  • D3DPTFILTERCAPS_LINEARMIPLINEAR
  • D3DPTFILTERCAPS_LINEARMIPNEAREST
  • D3DPTFILTERCAPS_MIPNEAREST
  • D3DPTFILTERCAPS_NEAREST

要求

   
标头 d3d9caps.h

请参阅

Direct3D 结构

GetDeviceCaps