For example, regardless of the type of voxel engine (surface rendering, depth rendering, etc), you generally need a method to blit a 2d shape in 3d space. Technologically, this is very simple. Once the points are rotated into the display space, for each point you get the z value, and draw your 2d primitive (generally a square, rectangle, or circle) into the z buffer with all points having the same z depth. Easy - easier than your average polygon draw routine, in fact. However, for the life of me, I can't think of an efficient way to do that in OpenGL. The only ways I can think of are:
A) Replace each voxel with four 3d coordinates that act as corners to a polygon. Not only do I beforehand have to calculate the proper location of these points to center this polygon around the voxel, but OpenGL has to do 4 times the work of rotating and then has to then do a polygon draw routine in 3d. That'll probably run *slower* than just writing my own routines and going without hardware acceleration.
Both of these options are, quite clearly, unfeasable. Does anyone have any better ideas, or is a voxel-engine writer stuck with writing their own entire unaccelerated rotation and primitive functions for no good reason other than OpenGL doesn't contain a very simple "draw a 2d shape in 3d" function?
Ideas?











