多少顶点缓冲区太多了?

Posted

技术标签:

【中文标题】多少顶点缓冲区太多了?【英文标题】:How many vertex buffers is too many? 【发布时间】:2011-07-29 21:18:01 【问题描述】:

D3D11 等较新的 API 强制使用顶点缓冲区。

您可以使用static (contents don't change) or dynamic vertex buffers (contents can be updated and changed by CPU)。

我的问题是,你怎么知道你正在接近极限? 每个模型都应该有自己的顶点缓冲区吗?您是否应该只有 8 个顶点缓冲区之类的东西并在所有模型之间共享它们,并根据需要进行更新?

【问题讨论】:

【参考方案1】:

你不应该为每个对象都有一个新的顶点缓冲区,不。但是你需要为每个纹理一个新的顶点缓冲区。你会想尽可能多地填满它们。 8个也不算多!

【讨论】:

你的意思是当你改变纹理时你需要一个新的顶点缓冲?【参考方案2】:

您不需要为每个纹理使用不同的 vb。您可以使用偏移到缓冲区的附加参数绘制子集,并从该缓冲区绘制给定数量的顶点。在对 drawindexedprimitive 的任何后续调用之间设置纹理。

【讨论】:

以上是关于多少顶点缓冲区太多了?的主要内容,如果未能解决你的问题,请参考以下文章

在堆栈上分配 16kb 是否太多了?

顶点以及顶点缓冲区

在 GLSL 顶点着色器中,您可以访问索引缓冲区中顶点的索引,而不仅仅是顶点缓冲区吗?

C# socket 收发与实际不符问题

Swizzling 顶点数组、顶点缓冲区对象和着色器

顶点和纹理坐标的缓冲区大小不同?