In my voxel engine (similar to minecraft), I create a array of vertices. This array is big enough to hold vertices for every block possible in the world, however not every block is present.
When I create the vertices, I first zero the vertices array, then create only the required vertices (backface culling). This results in a partially empty array of vertices, because some blocks do not exist and there are many faces culled. If I send this whole array into a vertex buffer, will this reduce performance? Because we will be sending a whole lot of empty vertices. Since the vertices array is fragmented, I cannot easily just send the vertices that exist (or non-zero vertices) without wasting precious CPU time calculating which ones to send.
Also, will calling DrawPrimitive for every block or even face reduce performance significantly? This way I can avoid drawing "empty vertices" by checking if the block exists and if the face is visible.