D3DHAL_D3DEXTENDEDCAPS结构(d3dhal.h)
D3DHAL_D3DEXTENDEDCAPS介绍了驱动程序的其他 3D 功能。
语法
typedef struct _D3DHAL_D3DEXTENDEDCAPS {
DWORD dwSize;
DWORD dwMinTextureWidth;
DWORD dwMaxTextureWidth;
DWORD dwMinTextureHeight;
DWORD dwMaxTextureHeight;
DWORD dwMinStippleWidth;
DWORD dwMaxStippleWidth;
DWORD dwMinStippleHeight;
DWORD dwMaxStippleHeight;
DWORD dwMaxTextureRepeat;
DWORD dwMaxTextureAspectRatio;
DWORD dwMaxAnisotropy;
D3DVALUE dvGuardBandLeft;
D3DVALUE dvGuardBandTop;
D3DVALUE dvGuardBandRight;
D3DVALUE dvGuardBandBottom;
D3DVALUE dvExtentsAdjust;
DWORD dwStencilCaps;
DWORD dwFVFCaps;
DWORD dwTextureOpCaps;
WORD wMaxTextureBlendStages;
WORD wMaxSimultaneousTextures;
DWORD dwMaxActiveLights;
D3DVALUE dvMaxVertexW;
WORD wMaxUserClipPlanes;
WORD wMaxVertexBlendMatrices;
DWORD dwVertexProcessingCaps;
DWORD dwReserved1;
DWORD dwReserved2;
DWORD dwReserved3;
DWORD dwReserved4;
} D3DHAL_D3DEXTENDEDCAPS;
成员
dwSize
指定此D3DHAL_D3DEXTENDEDCAPS结构的大小(以字节为单位)。
dwMinTextureWidth
指定驱动程序或设备支持的最小纹理宽度(以像素为单位)。 此成员通常是 2 的幂。 这些成员以提示的形式提供给应用程序,应用程序负责在必要时调整纹理大小。
dwMaxTextureWidth
指定驱动程序或设备支持的最大纹理宽度(以像素为单位)。 此成员通常是 2 的幂。 这些成员以提示的形式提供给应用程序,应用程序负责在必要时调整纹理大小。
dwMinTextureHeight
指定驱动程序支持的最小纹理高度(以像素为单位)。 此成员通常是 2 的幂。
dwMaxTextureHeight
指定驱动程序支持的最大纹理高度(以像素为单位)。 此成员通常是 2 的幂。
dwMinStippleWidth
指定驱动程序支持的最小存根宽度(以像素为单位)。
dwMaxStippleWidth
指定驱动程序支持的最大存根宽度(以像素为单位)。
dwMinStippleHeight
指定驱动程序支持的最小存根高度(以像素为单位)。
dwMaxStippleHeight
指定驱动程序支持的最大存根高度(以像素为单位)。
dwMaxTextureRepeat
指定后期规范化纹理索引的整数(子节)位的完整范围。 如果设置了D3DDEVCAPS_TEXREPEATNOTSCALEDBYSIZE位,则此成员可以包装纹理的次数。 如果未设置D3DDEVCAPS_TEXREPEATNOTSCALEDBYSIZE位,则表达式会提供纹理包装的时间:dwMaxTextureRepeat * (纹理大小)。
dwMaxTextureAspectRatio
指定硬件支持的最大纹理纵横比。 此成员通常是 2 的幂。 此最大纵横比以像素为单位度量纹理的高度(以像素为单位)或宽度除以高度,以产生更大的结果。 例如,8192 像素宽(1 像素高或 1 像素宽到 8192 高)的纹理与仅支持最大纵横比 4092 的显示设备无效。 如果硬件在纵横比方面不受限制,dwMaxTextureAspectRatio 是 dwMaxTextureWidth 和 dwMaxTextureHeight。
dwMaxAnisotropy
指定D3DRENDERSTATE_ANISOTROPY呈现状态的最大有效值。 如果驱动程序的硬件不支持异性筛选,驱动程序应将此成员设置为 1。 将此成员设置为 0 表示无效值。
dvGuardBandLeft
dvGuardBandTop
dvGuardBandRight
dvGuardBandBottom
指定防护带剪辑区域的屏幕空间坐标(以像素为单位)。 此矩形的左上角有坐标(dvGuardBandLeft,dvGuardBandTop)。 左下角有坐标(dvGuardBandRight,dvGuardBandBottom)。 此矩形内但视区矩形外部的坐标会自动剪裁。
dvExtentsAdjust
指定向外调整盘区矩形以适应抗锯齿内核所需的像素数。
dwStencilCaps
指定驱动程序或设备支持的模具缓冲区作。 有关下表中显示的模具缓冲区作的进一步说明,请参阅 DirectX SDK 文档中D3DSTENCILOP。 假定模具作对所有三个模具缓冲区作呈现状态有效(D3DRENDERSTATE_STENCILFAIL、D3DRENDERSTATE_STENCILPASS和D3DRENDERSTATE_STENCILZFAIL)。 此成员可以是以下任一值的按位 OR:
价值 | 模具缓冲区作 |
---|---|
D3DSTENCILCAPS_DECR | 支持D3DSTENCILOP_DECR作。 |
D3DSTENCILCAPS_DECRSAT | 支持D3DSTENCILOP_DECRSAT作。 |
D3DSTENCILCAPS_INCR | 支持D3DSTENCILOP_INCR作。 |
D3DSTENCILCAPS_INCRSAT | 支持D3DSTENCILOP_INCRSAT作。 |
D3DSTENCILCAPS_INVERT | 支持D3DSTENCILOP_INVERT作。 |
D3DSTENCILCAPS_KEEP | 支持D3DSTENCILOP_KEEP作。 |
D3DSTENCILCAPS_REPLACE | 支持D3DSTENCILOP_REPLACE作。 |
D3DSTENCILCAPS_ZERO | 支持D3DSTENCILOP_ZERO作。 |
dwFVFCaps
指定驱动程序可以处理的纹理坐标数。 此值可以是范围 0 到 8 中的整数,其中 0 表示驱动程序不支持文本,1 表示驱动程序只能处理一组纹理坐标,2 表示驱动程序可以处理两组纹理坐标,依此类说。
无论驱动程序实际使用的纹理坐标数如何,驱动程序都必须能够分析顶点数据中存在的所有纹理坐标。 驱动程序应使用在 DirectX SDK 文档中介绍的D3DTEXTURESTAGESTATETYPE枚举D3DTSS_TEXCOORDINDEX值提供的索引来确定呈现时要使用的纹理坐标。
dwTextureOpCaps
指定设备支持的纹理作。 有关下表中列出的纹理作的说明,请参阅 DirectX SDK 文档中的D3DTEXTUREOP。 此成员可以是以下值的按位 OR:
价值 | 支持的纹理作 |
---|---|
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_MODULATE | 此设备支持D3DTOP_MODULATE纹理混合作。 |
D3DTEXOPCAPS_MODULATE2X | 此设备支持D3DTOP_MODULATE2X纹理混合作。 |
D3DTEXOPCAPS_MODULATE4X | 此设备支持D3DTOP_MODULATE4X纹理混合作。 |
D3DTEXOPCAPS_MODULATEALPHA_ADDCOLOR | 此设备支持D3DTOP_MODULATEALPHA_ADDCOLOR纹理混合作。 |
D3DTEXOPCAPS_MODULATECOLOR_ADDALPHA | 此设备支持D3DTOP_MODULATEALPHA_ADDCOLOR纹理混合作。 |
D3DTEXOPCAPS_MODULATEINVALPHA_ADDCOLOR | 此设备支持D3DTOP_MODULATEINVALPHA_ADDCOLOR纹理混合作。 |
D3DTEXOPCAPS_MODULATEINVCOLOR_ADDALPHA | 此设备支持D3DTOP_MODULATEINVCOLOR_ADDALPHA纹理混合作。 |
D3DTEXOPCAPS_PREMODULATE | 此设备支持D3DTOP_PREMODULATE纹理混合作。 |
D3DTEXOPCAPS_SELECTARG1 | 此设备支持D3DTOP_SELECTARG1纹理混合作。 |
D3DTEXOPCAPS_SELECTARG2 | 此设备支持D3DTOP_SELECTARG2纹理混合作。 |
D3DTEXOPCAPS_SUBTRACT | 此设备支持D3DTOP_SUBTRACT纹理混合作。 |
wMaxTextureBlendStages
指定此设备支持的最大纹理混合阶段数。
wMaxSimultaneousTextures
指定可同时绑定到此设备的纹理混合阶段的最大纹理数。 也就是说,wMaxSimultaneousTextures 指定有多少纹理阶段可以通过 lDirect3DDevice7::SetTexture 方法绑定到纹理。 有关此方法的详细信息,请参阅 Microsoft Windows SDK 文档。
dwMaxActiveLights
指定此设备支持的最大活动灯数。 这只需要在支持硬件转换和照明的驱动程序中指定(因此在设备上限中指定D3DDEVCAPS_HWTRANSFORMANDLIGHT)。
dvMaxVertexW
指定此设备支持的最大 W 范围。 这只需要在支持 W 缓冲的驱动程序中指定(因此在光栅化上限中指定D3DPRASTERCAPS_WBUFFER)。 W 深度值的单位取决于正在运行的应用程序。 例如,应用程序可以指定深度(以米为单位)。
wMaxUserClipPlanes
指定支持的最大用户定义的剪辑平面数。
wMaxVertexBlendMatrices
指定顶点混合支持的世界矩阵数。
dwVertexProcessingCaps
指定驱动程序支持的顶点处理上限。 此成员可以是以下值的按位 OR:
价值 | 意义 |
---|---|
D3DVTXPCAPS_DIRECTIONALLIGHTS | 设备可以执行方向灯。 |
D3DVTXPCAPS_LOCALVIEWER | 设备可以执行本地查看器。 |
D3DVTXPCAPS_MATERIALSOURCE7 | 设备可以执行 DirectX 7.0 颜色材料源作。 |
D3DVTXPCAPS_NO_TEXGEN_NONLOCALVIEWER | 设备不支持非局部查看器模式下的纹理生成。 |
D3DVTXPCAPS_POSITIONALLIGHTS | 设备可以执行位置灯(包括点和点)。 |
D3DVTXPCAPS_TEXGEN | 设备可以执行 texgen。 |
D3DVTXPCAPS_TEXGEN_SPHEREMAP | 设备支持D3DTSS_TCI_SPHEREMAP。 |
D3DVTXPCAPS_TWEENING | 设备可以执行顶点补全。 |
dwReserved1
保留供系统使用。
dwReserved2
保留供系统使用。
dwReserved3
保留供系统使用。
dwReserved4
保留供系统使用。
言论
驱动程序分配并零初始化此结构,并在它支持的成员中设置适当的值。 驱动程序的 DdGetDriverInfo 函数在使用 GUID_D3DExtendedCaps GUID 调用该函数时返回指向此结构的指针。
当驱动程序填充此结构时,即使用于检索功能的接口(如 lDirect3DDevice3)也不支持执行缓冲区,它也可以设置执行缓冲区的值。
要求
要求 | 价值 |
---|---|
标头 | d3dhal.h (包括 D3dhal.h) |