Часто задаваемые вопросы немного устарели. Технически с OpenGL-3 можно передавать матрицы в формате строки, задав для параметра transpose для glUniformMatrix значение true.
Однако лично я нахожу, что столбец майора упорядочивает огромное преимущество: он позволяет напрямую обращаться к базовым векторам системы координат (преобразования), которую описывает матрица. Посмотрите на вашу типичную матрицу преобразования
X_x Y_x Z_x T_x
X_y Y_y Z_y T_y
X_z Y_z Z_z T_z
W_a W_b W_c W_w
X, Y и Z - базовые векторы системы координат, в которую вы преобразуетесь, T - смещение.
Теперь посмотрим на индексирование, используемое OpenGL
0 4 8 c
1 5 9 d
2 6 a e
3 7 b f
Таким образом, в смещении 0 вы найдете вектор X, на смещении 4 вы найдете Y, смещение 8 даст Z, а смещение c даст T. Вы можете получить к ним доступ напрямую, передать их функциям управления вектором, таким как
float vec4_length3(float v[4]);
прямым путем:
float M[16] = {...};
float T_length = vec4_length3(&M[c]);
вместо того, чтобы сначала вырезать эти векторы из матрицы по частям.