作者:i_dovelemon
日期:2016/06/10
来源:CSDN
主题:OpenGL,glUniformMatrix4fv
引言
今天,在搭建Graphics Lab OpenGL版本的实验框架的时候,需要编写一套矩阵运算函数,在实际测试的时候遇到了一些问题。这个问题是我以前写OpenGL程序的时候也遇到过,并且解决了,但是今天又一次花了很长时间才搞明白,所以,特地在此处记录下来,免得以后又忘记了!!!
问题描述
我在写Matrix这个类的时候,需要提供一些用于构造缩放,旋转和平移矩阵的方法,我知道在OpenGL中使用的是column-major的矩阵形式,所以编写了如下的三个函数:
void Matrix::MakeScaleMatrix(float sx, float sy, float sz) {
float m[4][4] = {
sx, 0.0f, 0.0f, 0.0f,
0.0f, sy, 0.0f, 0.0f,
0.0f, 0.0f, sz, 0.0f,
0.0f, 0.0f, 0.0f, 1.0f
};
memcpy(&m_Matrix, m, sizeof(