前面已经讲过,OpenGL所谓的按列存储不如说是按列扫描矩阵更容易理解,因为内存中的数据还是按行的。
在做阴影贴图的时候,我们发现纹理坐标所得来的矩阵 T = bias * lightprojectmatrix * linghtmodelviewmatrix * cameramodelviewmatrix的逆 ,然后再由 T * V便得到了需要的纹理坐标。
由于是坐平移和缩放,根据我前面所讲OpenGL矩阵转置测试——禁止转载一节所讲的,很容易明白bias为什么最后一列不是用来平移坐标的啦,但是我感觉里面相乘的时候还是bias的转置与lightprojectmartrx的转置等等相乘的。这便很符合投影纹理时的矩阵了,如下:
(注意:按以上分析,其实我们在程序种载入的时候应该是bias的转置,因为在相乘的时候它会自动转回来),个人太愚笨,希望能对你有所帮助。