I’ve created a matrix class for use in OpenGL,
the matrix class uses two-dimensional float array,
how should I do multiplication of matrices correctly ?
A tip: OpenGL is column-major operator-on-the-left (e.g. PVM * v1 = v2)
This is the same as row-major operator-on-the-right (e.g. v1 * MVP = v2).
Flipping both results in a net-zero change in the math. You get exactly the same values in exactly the same memory locations.
So since C/C++ is row-major, do the second one. More here. With this you can spoon your row-major operator-on-the-right matrices directly to OpenGL (which expects column-major operator-on-the-left matrices) via glLoadMatrixd, glMatrixLoadf, glUniformMatrix4fv, or whatever… No need to waste time on useless transpose operations.