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。 此最大纵横比作为纹理高度(以像素为单位)除以宽度(以像素为单位)或宽度除以高度的度量值提供,以产生较大结果为准。 例如,对于仅支持最大纵横比 4092 的显示设备,宽度为 8192 像素、高 1 像素或 1 像素宽 x 8192 的纹理无效。 如果硬件的纵横比不受限制, 则 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 表示驱动程序可以处理两组纹理坐标,依此类说。
驱动程序必须能够分析顶点数据中存在的所有纹理坐标,而不考虑驱动程序实际使用的纹理坐标数。 驱动程序应使用D3DTEXTURESTAGESTATETYPE枚举的D3DTSS_TEXCOORDINDEX值(如 DirectX SDK 文档中所述)提供的索引来确定呈现时要使用的纹理坐标集。
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
预留给系统使用。
注解
驱动程序分配和零初始化此结构,并在它支持的成员中设置适当的值。 当使用 GUID_D3DExtendedCaps GUID 调用该函数时,驱动程序的 DdGetDriverInfo 函数返回指向此结构的指针。
当驱动程序填充此结构时,即使用于检索功能 ((如 lDirect3DDevice3) )的接口不支持执行缓冲区,它也可以设置执行缓冲区功能的值。
要求
要求 | 值 |
---|---|
Header | d3dhal.h (包括 D3dhal.h) |