转换矩阵问题
Transformation matrix issues
我正在通过现代OpenGL教程学习计算机图形学,并且在将代码从GLM重构为自定义矩阵数学类时遇到了问题。使用GLM I可以达到所需的效果(这是一个在屏幕上旋转的金字塔形状);然而,使用我的数学课,我无法得到正确的转换。作为参考,这就是我的数学课上的转换。使用GLM,形状将沿着x轴(水平)平移,这正是我想要的。我认为GLSL代码是正确的,因为它与GLM代码一起工作。
在我的Transform
类中,我有一个函数,它返回一个模型矩阵,并映射到着色器类中相应的统一变量。
Matrix4f Transform::getModel() const // my math class - not working
{
Matrix4f transMat, rotMat, scaleMat;
transMat.initTranslation(trans.x, trans.y, trans.z);
rotMat.initRotation(rot.x, rot.y, rot.z);
scaleMat.initScale(scale.x, scale.y, scale.z);
return transMat * rotMat * scaleMat;
}
glm::mat4 Transform::getModel() const // glm - works fine
{
glm::mat4 transMat = glm::translate(glm::vec3(trans.x, trans.y, trans.z));
glm::mat4 scaleMat = glm::scale(glm::vec3(scale.x, scale.y, scale.z));
glm::mat4 rotX = glm::rotate(rot.x, glm::vec3(1.0, 0.0, 0.0));
glm::mat4 rotY = glm::rotate(rot.y, glm::vec3(0.0, 1.0, 0.0));
glm::mat4 rotZ = glm::rotate(rot.z, glm::vec3(0.0, 0.0, 1.0));
glm::mat4 rotMat = rotX * rotY * rotZ;
return transMat * rotMat * scaleMat;
}
我认为问题出在我的Matrix4<T>
类上,但有相当多的代码要显示,所以我将进行链接。Matrix类基于我上面链接的教程。
附言:如果你想知道我为什么用自定义数学课而不是GLM,那是为了学习(我意识到GLM比我未经测试的库更适合这个)。
感谢您的帮助,我所需要做的就是更改glUniformMatrix*中的第三个参数,该参数对变换矩阵执行转置。
相关文章:
- C++转换参数初始化问题
- 将父类对象强制转换为子类的问题
- 模板类转换问题 - 无法推断调用的函数
- 将旧管道转换为现代 openGL 时出现问题
- 将字节数组转换为带有字节序问题的指针
- 复制构造函数隐式转换问题
- 使用转换器提升 Python 问题 - 静态链接
- 与模板 (c++) 相关的转换问题
- 将文件复制到自定义位置,存在字符串转换问题
- 从基指针到派生的强制转换问题
- JNI 日期值转换问题,在C++中获取不同的长整型值
- 从 argv[1] 转换为字符 * 字符串后有什么问题?
- 将字符数组转换为结构时出现问题. 结构的字符数组变量溢出
- PX 转换例程编译问题
- 类型转换问题
- C++,遇到将双精度转换为整数的问题
- 拆分 pybind11 模块和自动类型转换问题
- 类型转换问题:返回为整数而不是浮点/类型
- Unicode 字符问题/转换参数
- c++和OpenCV:问题转换图像到灰度