IDirect3DDevice9::P rocessVertices 方法 (d3d9helper.h)
将顶点着色器定义的顶点处理应用于输入数据流集,从而将交错顶点数据的单个流生成到目标顶点缓冲区。
语法
HRESULT ProcessVertices(
[in] UINT SrcStartIndex,
[in] UINT DestIndex,
[in] UINT VertexCount,
[in] IDirect3DVertexBuffer9 *pDestBuffer,
[in] IDirect3DVertexDeclaration9 *pVertexDecl,
[in] DWORD Flags
);
参数
[in] SrcStartIndex
类型: UINT
要加载的第一个顶点的索引。
[in] DestIndex
类型: UINT
结果放置到的目标顶点缓冲区中的第一个顶点的索引。
[in] VertexCount
类型: UINT
要处理的顶点数。
[in] pDestBuffer
指向 IDirect3DVertexBuffer9 接口的指针,该接口是表示交错顶点数据流的目标顶点缓冲区。
[in] pVertexDecl
类型: IDirect3DVertexDeclaration9*
指向表示输出顶点数据声明的 IDirect3DVertexDeclaration9 接口的指针。 当顶点着色器 3.0 或更高版本设置为当前顶点着色器时,输出顶点声明必须存在。
[in] Flags
类型: DWORD
处理选项。 将此参数设置为 0,以便进行默认处理。 设置为 D3DPV_DONOTCOPYDATA 可防止系统将不受顶点操作影响的顶点数据复制到目标缓冲区中。 D3DPV_DONOTCOPYDATA值可以与一个或多个适用于目标缓冲区的 D3DLOCK 值组合使用。
返回值
类型: HRESULT
如果该方法成功,则返回值D3D_OK。 如果方法失败,则可以D3DERR_INVALIDCALL返回值。
备注
此方法的操作顺序如下:
- 使用世界 + 视图 + 投影矩阵将顶点转换为投影空间。
- 使用视区设置计算屏幕坐标。
- 如果启用了剪裁,则计算剪辑代码并将其存储在与目标顶点缓冲区关联的内部缓冲区中。 如果顶点位于视锥内,则计算其屏幕坐标。 如果顶点在视锥外,则顶点存储在投影空间坐标中的目标顶点缓冲区中。
- 其他说明:用户无权访问内部剪辑代码缓冲区。 不对三角形或任何其他基元执行剪裁。
当 Direct3D 生成纹理坐标,或者复制或转换输入纹理坐标,并且输出纹理坐标格式定义的纹理坐标组件多于 Direct3D 生成的纹理坐标分量时,Direct3D 不会更改这些额外的组件。
要求
目标平台 | Windows |
标头 | d3d9helper.h (包括 D3D9.h) |
Library | D3D9.lib |