Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/140.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ DX10&x2B;多顶点缓冲区,单索引缓冲区_C++_Directx - Fatal编程技术网

C++ DX10&x2B;多顶点缓冲区,单索引缓冲区

C++ DX10&x2B;多顶点缓冲区,单索引缓冲区,c++,directx,C++,Directx,我有点困惑,为什么可以设置一个活动顶点缓冲区数组,但只能设置一个索引缓冲区?一个索引缓冲区可以从所有顶点缓冲区中寻址顶点吗?如果是这样,我将如何指定索引所属的缓冲区 另一个问题是,由于我使用的是索引三角形列表,索引数据的大小与每个网格的顶点数据大致相同。我在考虑为每个顶点缓冲区创建一个索引缓冲区。我将动态添加网格,直到其中一个缓冲区用完,在该点创建另一对。这样做不可避免地会使一对缓冲区中的一个总是在另一个之前填满,剩余的空间永远不会被使用。该空间是否在gpu中被标记为保留空间? 例如,我可以将包

我有点困惑,为什么可以设置一个活动顶点缓冲区数组,但只能设置一个索引缓冲区?一个索引缓冲区可以从所有顶点缓冲区中寻址顶点吗?如果是这样,我将如何指定索引所属的缓冲区

另一个问题是,由于我使用的是索引三角形列表,索引数据的大小与每个网格的顶点数据大致相同。我在考虑为每个顶点缓冲区创建一个索引缓冲区。我将动态添加网格,直到其中一个缓冲区用完,在该点创建另一对。这样做不可避免地会使一对缓冲区中的一个总是在另一个之前填满,剩余的空间永远不会被使用。该空间是否在gpu中被标记为保留空间?
例如,我可以将包含32MB数据但以64MB字节宽度创建的4个缓冲区放入128MB的vram中吗?

必须同时对所有顶点缓冲区使用相同的索引。这样做的目的是允许不同的顶点缓冲区包含顶点数据的不同组件。例如,您可以决定将位置存储在一个顶点缓冲区中,将纹理坐标存储在第二个缓冲区中。第0个索引将从第一个顶点缓冲区访问第一个位置,从第二个顶点缓冲区访问第一个纹理坐标

如果希望每帧更新纹理坐标,但从不更改位置,则这将节省带宽

多个顶点缓冲区也用于实例化

创建顶点或索引缓冲区时,请指定缓冲区的大小。这部分内存将保留在视频ram中,不能被其他任何东西使用


因此,如果我理解你的问题,不,你不能将四个64mb的缓冲区放入128 mb的ram。

所有顶点缓冲区必须同时使用相同的索引。这样做的目的是允许不同的顶点缓冲区包含顶点数据的不同组件。例如,您可以决定将位置存储在一个顶点缓冲区中,将纹理坐标存储在第二个缓冲区中。第0个索引将从第一个顶点缓冲区访问第一个位置,从第二个顶点缓冲区访问第一个纹理坐标

如果希望每帧更新纹理坐标,但从不更改位置,则这将节省带宽

多个顶点缓冲区也用于实例化

创建顶点或索引缓冲区时,请指定缓冲区的大小。这部分内存将保留在视频ram中,不能被其他任何东西使用


因此,如果我理解你的问题,不,你不能将四个64mb缓冲区放入128 mb的ram。

那么,这就清楚了,从多个缓冲区获取逐顶点数据如何影响性能?如果两个顶点缓冲区都有位置数据,会发生什么情况?我可以为动画和类似的东西同时获取和插值吗?DX10+中没有固定的管道,因此完全取决于您(在编写着色器时)如何处理同一顶点的两个不同位置。动画通常使用世界矩阵之间的插值而不是两个顶点缓冲区之间的插值来完成,但这是一个完全不同的主题!这就清楚了,从多个缓冲区获取逐顶点数据如何影响性能?如果两个顶点缓冲区都有位置数据,会发生什么情况?我可以为动画和类似的东西同时获取和插值吗?DX10+中没有固定的管道,因此完全取决于您(在编写着色器时)如何处理同一顶点的两个不同位置。动画通常使用世界矩阵之间的插值而不是两个顶点缓冲区之间的插值来完成,但这是一个完全不同的主题!