I know, its easy if you know it, but I'm happy because I feel like I made a breakthrough.
- The matrix is merely something you pass the device to tell it what to do with all subsequent vertices sent to it. You send it any vertex data to the device and it goes through one end and pops out the other and all transformed.
- Now if you changed the matrices in the render() sub you could use the same one over and over by just resetting to to .Identify, and then changing it for the next object to be rendered.
- Therefore, the only reason you need multiple matrices is because its probably faster than changing the same one over and over and because you would have to change it during rendering.
Does that sound right

Matrices
CE
I've been theorizing about what the best way to manage everything is.
Mmmm I like theory.
I've been meaning to ask if anyone has a small game outline that shows the structure of a game.
Tracy - MSFT
It's basically correct. Just to give you more of an insight. You have a pipeline (kinda like a pipe) where vertices goes in and pixels come out. The pipeline transforms your vertices into pixels using transformations and other related techniques.
In a Graphics API you generally have 3 base transformations.
World Transformation : This basically places your objects into the 3D world.
View Transformation : Places your camera in the world.
Projection Transformation : This modifies the way your camera views the world.
This is just a very loose description but should suffice. Usually you will be working with the world transformation and view transformation alot. You can think of your view transformation as the camera. The world transformation as your transformation of your objects such as translating(moving), scaling, rotating your vertices.
"Now if you changed the matrices in the render() sub you could use the same one over and over by just resetting to to .Identify, and then changing it for the next object to be rendered."
Usually what I do is have a few methods such as Init(), Update() , PreRender(), Render(), PostRender().
I do most of my transformations such as translating/scaling and rotation in the Update method and in the Render method I will set the individual transformations to the device. You could follow the pattern like so,
1) Set Transform
e.g. Device.Transform.World = Matrix.Translation(0.0f, 0.0f, 0.0f);
2) Render Game object
e.g. Mesh.DrawSubset(x);
1) Set Other Transform
e.g. Device.Transform.World = Matrix.Translation(0.0f, 0.0f, 0.0f);
2) Render Other Game object
e.g. Mesh.DrawSubset(x);
"Therefore, the only reason you need multiple matrices is because its probably faster than changing the same one over and over and because you would have to change it during rendering."
I usually create a entity class that will encapsulate my game objects such as players, cars and guns etc... You can have a class that looks similar to a Employee class. This class will have the following members.
Mesh, Matrix matWorld (World transformation for the particular object) and many more such as a related texture.
This is good for a start but if you move forward you will find that there are many other techniques and such that you could use to reduce redundancy.. I don't want to mention them here as I don't want to confuse you.
I hope this helps.
Take care.