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 字节顶点,并维护良好的缓存排序。

顶点缓冲区