如下是 msdn的相关函数的说明,又进一步说明和验证 color-major 概念
glLoadMatrixd function
Applies to: desktop apps only
The glLoadMatrixd and glLoadMatrixf functions replace the current matrix with an arbitrary matrix.
Syntax
void WINAPI glLoadMatrixd( const GLdouble *m );
Parameters
-
m
-
A pointer to a 4x4 matrix stored in column-major order as 16 consecutive values.
Return value
This function does not return a value.
Error codes
The following error code can be retrieved by the glGetError function.
Name | Meaning |
---|---|
| The function was called between a call to glBegin and the corresponding call to glEnd. |
Remarks
The glLoadMatrix function replaces the current matrix with the one specified in m. The current matrix is the projection matrix, modelview matrix, or texture matrix, determined by the current matrix mode (see glMatrixMode).
The m parameter points to a 4x4 matrix of single-precision or double-precision floating-point values stored in column-major order. That is, the matrix is stored as shown in the following image.
// 4 x 4 array will be organized into a0, a4, a8, a12 (from first colum of 16 consecutive values),
// then a1, a5, a9, a13 (from second column), etc
// Therefore it is regarded as column-major order.
![Ee872048.load02(en-us,VS.85).png Ee872048.load02(en-us,VS.85).png](http://i.msdn.microsoft.com/dynimg/IC534287.png)
The following functions retrieve information related to glLoadMatrix:
glGet with argument GL_MATRIX_MODE
glGet with argument GL_MODELVIEW_MATRIX
glGet with argument GL_PROJECTION_MATRIX
glGet with argument GL_TEXTURE_MATRIX
// for example
const GLdouble bias[16] = {
0.5, 0.0, 0.0, 0.0,
0.0, 0.5, 0.0, 0.0,
0.0, 0.0, 0.5, 0.0,
0.5, 0.5, 0.5, 1.0};
glLoadIdentity();
glLoadMatrixd(bias);
This will cause current matrix is like thus.
0.5, 0.0, 0.0, 0.5, (a0, a4, a8, a12)
0.0, 0.5, 0.0, 0.5, (a1, a5, a9, a13)
0.0, 0.0, 0.5, 0.5, (a2, a6, a10, a14)
0.0, 0.0, 0.0, 1.0 (a3, a7, a11, a15)