DirectX had a funny way of dealing with this. I wonder if OGL is the same...

Are vectors in OGL and GLSL column or row vectors?

For instance, usually:

/ 1 2 0 2 \ / 1 \ / 1*1 + 2*2 + 4*0 + 3*2 \

| 3 0 1 3 | | 2 | = | 1*3 + 2*0 + 4*1 + 3*3 |

| 5 6 1 0 | | 4 | | 1*5 + 2*6 + 4*1 + 3*0 |

\ 1 0 0 2 / \ 3 / \ 1*1 + 2*0 + 4*0 + 3*2 /

but if GLSL is treating vectors as row vectors then most of the short cuts I've prepared suddenly go out the window. DX used column vectors in C++ and row vectors in shaders, so it was necessary to pass the inverse transpose model-view-projection matrix to the shader. I really hope OGL doesn't do anything similar.

If I multiply a vector by a matrix, will GLSL treat it as the same operation as multiplying a matrix by a vector? Or does it not care about premultiplication and postmultiplication?