   Vertex Buffer Use
  I am wondering, in your experience, which is a better way to use vertex buffers (Direct3D VBs, and OpenGL ARB VBOs):(1) Dynamically; for example sorting the nodes I must draw by texture, filling the VB with base vertex data altered by their orientation matrix, and drawing that.(2) Statically; for example, having a VB per object and altering the world translation matrix accordingly before drawing, then drawing.I am leaning towards dynamic usage, but I wanted all of your input as well.
  Dynamic usage means that you pay the penalty of copying your data each frame. Even worse, you pay the penalty of transforming your data on the CPU each frame. Meanwhile, keeping the VB static, and letting the graphics card do the transform, will free up a lot of CPU and memory bandwidth; especially on cards that have hardware transform engines (which is all the "gamer" cards for the last 3 years, such as GeForce, almost all Radeons, etc).It''s still a good idea to sort by texture (or, if you use ''em, pixel shaders first, then vertex shaders, then texture). ;  Hmm, good point.  Static would definately be easier on me .  I believe I''ll use static VBs for large mesh data, and perhaps I''ll use dynamic VBs for things such as particles.  I am guessing that transforming a few particles on the CPU would be lest costly than a hell of a lot of Draw() commands.  ;  We use static for most meshes.  Particle systems are done as dynamic, and transformed in software.  Once things get more complex than a quad you should have a very good reason for doing transforms in software...One oddity of our engine is that we don''t do morph targets in the shader.  There are a variety of reasons to support both methods of morphing, but we''ve never actually bothered trying them in hardware.  For meshes with morph targets, for each section of mesh (broken by poly count, bone constant limits, and material changes), if atleast 1 morph target is active, we morph in software and send the data via dynamic VB.  If the mesh doesn''t morph, or has no active morphs in this section, we use the static base model already on the card.