Directx 重用VertexBuffer或创建新的VertexBuffer对象?

Directx 重用VertexBuffer或创建新的VertexBuffer对象?,directx,2d,vertex-buffer,directx-10,Directx,2d,Vertex Buffer,Directx 10,目前,我正在尝试在directX10中渲染位图字体,我希望尽可能高效地执行此操作。但由于这个问题,我很难开始我的设计 那么,我应该重用单个VertexBuffer还是创建多个VertexBuffer对象 目前,我在程序中为每个四边形对象分配一个动态VertexBuffer。这样,如果屏幕上没有任何移动,我就不必映射/取消映射VertexBuffer。对于字体,我可以实现一个类似的方法,在这个方法中,我为每个文本框分配一个缓冲区,或者类似的方法 搜索之后,我读到了关于为所有对象重用单个Vertex

目前,我正在尝试在directX10中渲染位图字体,我希望尽可能高效地执行此操作。但由于这个问题,我很难开始我的设计

那么,我应该重用单个VertexBuffer还是创建多个VertexBuffer对象

目前,我在程序中为每个四边形对象分配一个动态VertexBuffer。这样,如果屏幕上没有任何移动,我就不必映射/取消映射VertexBuffer。对于字体,我可以实现一个类似的方法,在这个方法中,我为每个文本框分配一个缓冲区,或者类似的方法

搜索之后,我读到了关于为所有对象重用单个VertexBuffer的内容。顶点缓存也出现了。这种方法的优点/缺点是什么?它比我以前的方法快吗

最后,有没有其他方法可以在屏幕上渲染多个2d四边形


提前感谢。

使用一个动态顶点缓冲区,并适当组合放弃和不覆盖是处理此类动态提交的最佳方法。驱动程序将使用DISCARD执行缓冲区重命名,以最小化GPU暂停

这是中SpriteBatch/SpriteFont和PrimitiveBatch使用的机制。您可以查看该源代码的详细信息,如果确实需要,您可以将其应用于Direct3D 10.x。当然,转向Direct3D 11可能是更好的选择