   Matrix calculation hardware acceleration
  Hi all, I'm new to computer graphics, and just had a question about general 3D programming. When I'm computing the transform matrices for model animations (i.e. slerp), I'm using a Matrix class that contains all the multiplication, inverse, (etc) algorithims. It seems that this approach wastes a lot of CPU power to perform seemingly menial matrix calculations. Would it be worth while to off-load these calculations to some kind of matrix calculation hardware? I know my average, run-of-the-mill graphics card has some matrix computation hardware. Can I use opengl to do these calculations for me? Again, would it be worth the trouble?   
  with GL you can do the maths with your class, then just send the finished matricies to the gfx card with glLoadMatrix (i think thats the function name...).Or, you can get the card to do all the maths with calls likeglLoadIdentity()glTranslate( x, y, z )glRotate( glScaleThis way, instead of multiplying by a translation matrix you just constructed, you just give the actual translation vector. Also all the maths can be done by specialised matrix processors and is much faster than CPU matrix multiplications.I would reccomend it unless you want to use move complex matricies like a skew matrix or something... But even then you could just send the constructed skew matrix to the card to be multiplied with glMultMatrix.In my engine I offload most matrix work to GL, but still have a matrix class in case there are any operations i need to do in software.   ;  I seem to have misread your question. If you want to pass of transformations to the GPU never to be seen again, then by all means, thats what its there for. But if you intend to somehow access this transformed data from your software after its transformed, my answer below stands.---Nope. The problem lies in the extra latancy required to push data out to the GPU and then to read the transformed data back. You might see benefit for very large sets or very large matrix computations(for eg. scientific applications) but for run-of-the-mill 3D tranformations it'd be more advantageous to utilize your CPU's vector units (thats SSE/SSE2/SSE3 for intel/AMD or Altivec on PowerPC) if you're not yet doing so. The CPU is actually a pretty capable machine when it comes to transformations, its the pixel pushing that makes them a poor choice for graphics computation. Even the most modern games do a TON of vector processing on the CPU for things such as culling, animation and maintaining the scene graph. If you're seeing un-acceptably low performance you're either doing something wrong (or at least not as well as it could be) or you're expecting too much. If you have not yet implimented any sort of object culling that'd be where I recomend you start your quest for optimization.On most console systems all the tranformation is done on the CPU (which are much slower than any modern PC processor,) to my knowlege only the Xbox and Xbox 360 have the hardware to perform transformations on their GPUs. Too bad you're not developing on the dreamcast, its CPU actually had a matrix-matrix multiplication instuction as well as instructions for matrix-vector opperations.   ;  Thanks Rav!I've never heard of those vector units. I'll definately look into them. I figured there'd be some overhead with GL as far as pushing popping matrices off the stack, but I wasn't sure how much. I guess it doesn't matter anyway, because I won't be pursuing that stuff any longer. You made a pretty convincing argument for the capabilities of the CPU.I guess I'm off to salt mines for now. Thanks again!