这两天在用OpenGL做项目,但是在做矩阵操作的时候出了问题,按照数学上想当然的方法进行矩阵操作居然得不到想要的结果。后来一查,DirectX用的是行矩阵,OpenGL用的是列矩阵。应该是这个影响到矩阵的执行顺序了,因为我发现在OpenGL里先写的矩阵运算居然是后执行的,例如执行:
glTranslated(0.5, 0, 0);//平移
glScaled(2.8, 1, 1); //缩放
glRotated(90, 0, 0, 1); //旋转
那么你得到的结果其实是先旋转,再缩放,再平移。
如果是在DirectX里的话,得到的结果就是平移、缩放、旋转。
看来OpenGL的矩阵变换有点坑啊。
之前做过一个定点缩放的算法,发现平移顺序不对头,感情原来是这样。