Original Post
Hi!
The engine I'm working on - which I'm almost getting to enjoy - has a part of it that uses a dynamic vertex buffer. It stems from the days of AGP graphics cards. As far as I know that has now been surpassed long since by PCI-Express cards.
A dynamic vertex buffer is a kind of temporary buffer which is created in the AGP ram between the CPU and the GPU. It has the advantage of being fast, yet has the drawback of having to be rendered every frame whether the vertices have changed positions or not. You can, for example use them for models where the vertices deform. You could I suppose use one to deform a vehicle that was crashing or maybe make a nice waterfall with one.
They are also used for animations which again has now been surpassed by using shaders to do the animations.
Why am I asking? Well the engine I'm working on is old, but my word it's teaching me alot. I've successfully updated it to use effect files over the old assembly method it once used. Not an easy task for an intermediate programmer but anyways it's done now and touch wood is all nice and clean too with no memory leaks or problems. When running in debug mode the program exits normally which I hope is a good sign all memory has been properly taken care of which I've tried to ensure with the constructor and destructor. Learned a few things about variable initialisation I can tell you!
Anyways, dynamic vertex buffers are a huge part of the vertex manager class in the engine. The original author even used a method of catching render calls and delaying them so they could be sorted into little mini caches based on the texture (or was it the material? - can't remember) they were using. This meant instead of rendering a few triangles you rendered maybe a couple of thousand per render call, even if the render calls in the application weren't all made at the same time.
What I want to know is:
1) Can I completely do away with dynamic vertex buffers given the presence of PCI-E in the modern age or should I keep them in case they are needed?
2) Are they even still supported by modern releases of DirectX 9.0 and onwards?
Would be most helpful to know cheers
The engine I'm working on - which I'm almost getting to enjoy - has a part of it that uses a dynamic vertex buffer. It stems from the days of AGP graphics cards. As far as I know that has now been surpassed long since by PCI-Express cards.
A dynamic vertex buffer is a kind of temporary buffer which is created in the AGP ram between the CPU and the GPU. It has the advantage of being fast, yet has the drawback of having to be rendered every frame whether the vertices have changed positions or not. You can, for example use them for models where the vertices deform. You could I suppose use one to deform a vehicle that was crashing or maybe make a nice waterfall with one.
They are also used for animations which again has now been surpassed by using shaders to do the animations.
Why am I asking? Well the engine I'm working on is old, but my word it's teaching me alot. I've successfully updated it to use effect files over the old assembly method it once used. Not an easy task for an intermediate programmer but anyways it's done now and touch wood is all nice and clean too with no memory leaks or problems. When running in debug mode the program exits normally which I hope is a good sign all memory has been properly taken care of which I've tried to ensure with the constructor and destructor. Learned a few things about variable initialisation I can tell you!
Anyways, dynamic vertex buffers are a huge part of the vertex manager class in the engine. The original author even used a method of catching render calls and delaying them so they could be sorted into little mini caches based on the texture (or was it the material? - can't remember) they were using. This meant instead of rendering a few triangles you rendered maybe a couple of thousand per render call, even if the render calls in the application weren't all made at the same time.
What I want to know is:
1) Can I completely do away with dynamic vertex buffers given the presence of PCI-E in the modern age or should I keep them in case they are needed?
2) Are they even still supported by modern releases of DirectX 9.0 and onwards?
Would be most helpful to know cheers