In both OpenGL and D3D matrices, the basis vectors go into the columns of the matrix.

However, OpenGL expects matrices in column-major order, while D3D expects them in row-major order (and, as far as I know, most programmers’ matrix classes are usually in row-major order). Thus, row-major matrices must be transposed to send them to OpenGL.

A 3x3 matrix is not right-handed or left-handed in itself, but if its determinant is > 0 then it is orientation-preserving, meaning it takes a right-handed basis to a right-handed one, and the same for left-handed bases. If the determinant is < 0, it is orientation-reversing, so it takes a right-handed basis to a left-handed one (and vice versa).

Sorry if this question seems simple, but I’m finding all kinds of conflicting info on the net.

My understanding of D3D matrices are that the basis vectors are in the columns of the matrix and for OpenGL the basis vectors go into rows of the matrices.

And also, D3D matrices are stored in row-major format meaning that row elements are next to each other in memory. Row-major doesn’t suggest anything about the basis vectors.

Right-handed vs left-handedness is represented in a matrix by the direction it rotates points/vectors (counter-clockwise vs clockwise).