行业资讯
您现在所在的位置:首页>企业动态>行业资讯

OpenGL-GML与矩阵

编辑:学到牛牛IT培训    发布日期: 2023-09-22 08:50:16  


GLM

OpenGL没有自带任何的矩阵和向量知识,所以我们必须定义我们自己的数学类和函数,GLM就是为OpenGL量身定做的数学库


GLM下载链接:

下载完成后, 我们将下图文件放入我们工程文件的include文件夹目录下。

1.png

2.png

GLM是OpenGL Mathematics的缩写,他是一个只有头文件的库,那么我们只需要包含他的头文件。

3.png


如果头文件加载无误、那么我们可以将以下代码加载到主函数中进行测试:

4.png

我们先用GLM内建的向量类定义一个叫做vec的向量。

接下来定义一个mat4类型的trans,默认是一个4x4单位矩阵。

下一步是创建一个变换矩阵,我们是把一个单位矩阵和一个位移向量传递给glm::translate()函数来完成这个工作,使得我们的矩阵根据我们给定的x、y、z值进行位移。


结果展示:

5.png

我们可以看到,在原来坐标的基础之上x平移了1 y平移了1。


我们还可以使我们的矩阵进行旋转或者是缩放:

6.png

矩阵旋转我们是通过glm::rotate()函数来完成的,同样的第一个参数也是填入我们创建的mat4对象,第二个参数就是我们所需要旋转的角度,第三个参数就是我们根据那个轴进行旋转。

结果展示:

7.png

那么同样的道理,缩放的话我们是通过glm::scale()函数实现的,第一个参数也是填入trans,第二个参数就代表的是矩阵哪个轴进行缩放,并且缩放大小是多少。(1代表缩放大小不变)。

8.png

结果展示:

9.png


我们掌握了这个知识点后, 我们就可以将我们之前所绘制的图形进行位移操作。

我们将修改顶点着色器让其接收一个mat4的uniform变量,然后再用矩阵uniform乘以位置向量:

10.png

在把位置向量传给gl_Position之前,我们先添加一个uniform,并且将其与变换矩阵相乘。我们的箱子现在应该是原来的二分之一大小并(向左)旋转了90度。当然,我们仍需要把变换矩阵传递给着色器:

11.png

接着,我们的shader就可以调用setMat4函数来实现矩阵的位移。

12.png

效果展示:

13.png

免费试学
课程好不好,不如实地听一听

封闭学习

2

1

联系我们

电话:028-61775817

邮箱:1572396657@qq.com

地址:成都市金牛区西城国际A座8楼

  • 新闻频道_关注IT技术应用资讯-学到牛牛
    新闻频道_关注IT技术应用资讯-学到牛牛

    扫一扫,免费咨询

  • 新闻频道_关注IT技术应用资讯-学到牛牛
    新闻频道_关注IT技术应用资讯-学到牛牛

    微信公众号

  • 新闻频道_关注IT技术应用资讯-学到牛牛
新闻频道_关注IT技术应用资讯-学到牛牛

学一流技术,找高薪工作

新闻频道_关注IT技术应用资讯-学到牛牛

7-24小时服务热线:

028-61775817

版权声明 网站地图

蜀ICP备2021001672号

课程问题轻松问