How to update Dynamic Vertex Buffer only few Vertices?


I am using cloth simulation techniques in my model.

So i take the cloth model, I wanted to update only 3000 vertices out of 12000 vertices in the model.

I am creating a DynamicVertexBuffer for 12000 vertices and in that updating the vertex positions alone to 3000 cloth vertices.

But anyway I have to send these all 12000 vertices to CPU to GPU for every frame using SetVertexBuffer. This is slowing down my application. I am getting only 2 fps.

Please advice me is there any way to update the position alone from existing GPU Vertexbuffer directly, so that I can skip sending the entire DynamicVertexbuffer from CPU to GPU.

Thanks and Regards,

pretty sure that sending 12000 vertices per frame is not the reason your application is slow unless the array generation is taking up too much time&memory, but basically every normal game scene has magnitudes more vertices to send per frame.

that said, the vertexBuffer.SetData() has the option to only send a chunk of vertices (update parts of the array instead of the array)

You can read about it here:,ssl&ei=c5bFV4HUNKqE6ATZrp_wCw

Thanks for the reply!
Let me check what other issues causing the issue.