FVF 顶点缓冲区 (Direct3D 9)

IDirect3DDevice9::CreateVertexBuffer 方法的 FVF 参数设置为非零值(必须是有效的 FVF 代码)指示缓冲区内容将由 FVF 代码进行特征化。 使用 FVF 代码创建的顶点缓冲区称为 FVF 顶点缓冲区。 IDirect3DDevice9 的一些方法或使用需要 FVF 顶点缓冲区,而其他方法则需要非 FVF 顶点缓冲区。 FVF 顶点缓冲区作为 IDirect3DDevice9::P rocessVertices 的目标顶点缓冲区参数是必需的。

FVF 顶点缓冲区可以绑定到任何流号的源数据流。

FVF 顶点缓冲区上存在D3DFVF_XYZRHW组件表示该缓冲区中的顶点已处理。 用于 IDirect3DDevice9::P rocessVertices 目标顶点缓冲区的顶点缓冲区必须进行后处理。 用于固定函数着色器输入的顶点缓冲区可以预处理或后处理。 如果顶点缓冲区经过后处理,则有效地绕过着色器,并将数据直接传递到基元剪辑和设置模块。

FVF 顶点缓冲区可与顶点着色器一起使用。 此外,顶点流可以表示与非 FVF 顶点缓冲区相同的顶点格式。 它们不必用于从单独的顶点缓冲区输入数据。 新顶点流的额外灵活性使需要将数据保持独立的应用程序能够更好地工作,但这不是必需的。 如果应用程序可以提前维护交错数据,则这是性能提升。 如果应用程序仅在每次呈现调用之前交错数据,则应允许 API 或硬件使用多个流执行此操作。

顶点性能最重要的事情是使用 32 字节顶点,并维护良好的缓存顺序。

顶点缓冲区