The 4x4 projection matrix is correct as-is, there's no need of transposing it. As a matter of fact, transposing it was causing the scene to always be horizontally centered regardless of the left/right planes set on glFrustum().
This went unnoticed until now because most of the examples/tutorials use a simple frustum where both vertical and horizontal coordinates are set to [-1, 1].
The 4x4 projection matrix is correct as-is, there's no need of transposing it. As a matter of fact, transposing it was causing the scene to always be horizontally centered regardless of the left/right planes set on glFrustum().
This went unnoticed until now because most of the examples/tutorials use a simple frustum where both vertical and horizontal coordinates are set to [-1, 1].