Here's what I see as the method for getting 3D objects perspective-transformed to screen:

(pseudocode)

On update: Create the camera matrix: c = camRotation * camTranslation Create the view matrix by inverting the camera matrix: v = c^-1 Create the projection matrix using the standard perspective projection matrix terms Create view-projection matrix: vp = p * v For each entity Create a model matrix using entity world position, rotation, and scale values Multiply this specific entity's world transform matrix (the model matrix): mvp = vp * m Set mvp as a uniform for vertex shader glDrawElements(...);

Queries:

- Please offer your advice on whether or not the above structure is sensible.
- What options do I have to reduce the number of draw calls? Merging static geometry into a single vertex list using a common texture atlas seems to be the only option?
- Re the MVP matrix above, why do some sources present the final matrix value as -1, and others as 1? What should I use?

Primary references:

OpenGL wiki page on viewing and transformations

Joe Groff's tutorial on transformation and projection

**Edited by NickWiggill, 06 July 2012 - 01:50 PM.**