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*

指向 IDirect3DVertexBuffer9 接口的指针,该接口是表示交错顶点数据流的目标顶点缓冲区。

[in] pVertexDecl

类型: IDirect3DVertexDeclaration9*

指向表示输出顶点数据声明的 IDirect3DVertexDeclaration9 接口的指针。 当顶点着色器 3.0 或更高版本设置为当前顶点着色器时,输出顶点声明必须存在。

[in] Flags

类型: DWORD

处理选项。 将此参数设置为 0,以便进行默认处理。 设置为 D3DPV_DONOTCOPYDATA 可防止系统将不受顶点操作影响的顶点数据复制到目标缓冲区中。 D3DPV_DONOTCOPYDATA值可以与一个或多个适用于目标缓冲区的 D3DLOCK 值组合使用。

返回值

类型: HRESULT

如果该方法成功,则返回值D3D_OK。 如果方法失败,则可以D3DERR_INVALIDCALL返回值。

备注

此方法的操作顺序如下:

  • 使用世界 + 视图 + 投影矩阵将顶点转换为投影空间。
  • 使用视区设置计算屏幕坐标。
  • 如果启用了剪裁,则计算剪辑代码并将其存储在与目标顶点缓冲区关联的内部缓冲区中。 如果顶点位于视锥内,则计算其屏幕坐标。 如果顶点在视锥外,则顶点存储在投影空间坐标中的目标顶点缓冲区中。
  • 其他说明:用户无权访问内部剪辑代码缓冲区。 不对三角形或任何其他基元执行剪裁。
必须使用 IDirect3DDevice9::CreateVertexBuffer 中的非零 FVF 参数创建目标顶点缓冲区 pDestBuffer。 在调用 IDirect3DDevice9::CreateVertexBuffer 方法期间指定的 FVF 代码指定目标顶点缓冲区中存在的顶点元素。

当 Direct3D 生成纹理坐标,或者复制或转换输入纹理坐标,并且输出纹理坐标格式定义的纹理坐标组件多于 Direct3D 生成的纹理坐标分量时,Direct3D 不会更改这些额外的组件。

要求

   
目标平台 Windows
标头 d3d9helper.h (包括 D3D9.h)
Library D3D9.lib

另请参阅

Direct3D 9) (设备类型和顶点处理要求

固定函数顶点处理 (Direct3D 9)

IDirect3DDevice9