glLoadIdentity的作用是将当前模型视图矩阵转换为单位矩阵(行数和列数相同的矩阵,并且矩阵的左上角至右下角的连线上的元素都为1,其它元素都为0),这样可以方便矩阵的乘法运算。
glMultMatrix矩阵的乘法.
如:
glLoadIdentity();
glMultiMatrix(A);
glMultiMatrix(B);
glMultiMatrix(C);
针对行向量和当前矩阵,上述代码可等价于:
(vx vy vz 1) *C*B*A
结果是一个1行4列的矩阵。
你可能会奇怪,为什么程序和实际矩阵的运算顺序是相反的呢。可以这么想像一下,glMultiMatrix先将矩阵加入到一个栈中保存,当所有的glMultiMatrix操作都完成后,再依次从栈中将缓存的矩阵取出并做相应的乘法操作。由于栈结构是先进后出的数据结构,所以可以猜想glMultiMatrix在执行时并没有直接将矩阵进行计算,而是先将矩阵放在了栈缓存中。