OpenGL矩阵运算——GLM库的使用

本文介绍了OpenGL数学库GLM的使用,包括其基本数据类型如vec2, vec3, mat4等,以及常用函数如translate, rotate, scale等。GLM提供矩阵构造和转换功能,如正交和透视投影矩阵,并通过glm::value_ptr与glUniformMatrix4fv配合将矩阵传入着色器。在GLSL中,向量乘法是逐元乘法。" 17788875,1856627,使用Java调用微信API获取用户信息,"['微信开发', '后端开发', 'API调用', 'JSON', '认证机制']
摘要由CSDN通过智能技术生成

GLM库简介

OpenGL没有内建矩阵运算方法,常用的第三方库为GLM。GLM是OpenGL Mathematics的缩写。作为一个header only库,GLM只要包括了相应的头文件就可以使用它提供的类和函数。GLM是C++语言编写的,故不适用于C语言工程。

头文件

  • GLM对于矩阵数据类型的定义位于glm/glm.hpp头文件中。
  • 生成变换矩阵的函数位于glm/gtc/matrix_transform.hpp头文件中。
  • 生成投影矩阵的函数位于glm/ext/matrix_clip_space.hpp头文件中。
  • 将数组转换成矩阵的函数位于头文件glm/gtc/type_ptr.hpp中。
  • glm::value_ptr函数位于头文件glm/gtc/type_ptr.hpp中

GLM常用数据类型

  • vec2 二维向量
  • vec3 三维向量
  • vec4 四维向量
  • mat2 二阶矩阵
  • mat3 三阶矩阵
  • mat4 四阶矩阵

GLM常用函数

  • glm::radians()
    角度制转弧度制,可应用于glm::rotate()中。
  • glm::translate()
    返回一个平移矩阵,第一个参数是目标矩阵,第二个参数是平移的方向向量。
  • glm::rotate()
    返回一个将点绕某个轴逆时针旋转一定弧度的旋转矩阵,第一个参数是弧度,第二个参数是旋转轴。
  • glm::scale()
    返回一个缩放矩阵,第一个参数是目标矩阵,第二个参数是在各坐标轴上的缩放系数。
  • glm::ortho(float left, float right, float bottom, float top, float zNear, float zFar);
    正交投影矩阵。前四个参数分别是视口的左、右、上、下坐标。第五和第六个参数则定义了近平面和远平面的距离。
  • glm::perspective(float fovy, float aspect, float zNear, float zFar);
    透视投影矩阵。第一个参数为视锥上下面之间的夹角,第二个参数为视口宽高比,第三、四个参数分别为近平面和远平面的深度。
  • glm::value_ptr()
    传入一个矩阵,返回一个数组。

GLM矩阵的默认构造

GLM库从0.9.9版本起,默认会将矩阵类型初始化为一个零矩阵(所有元素均为0),而不是单位矩阵。如果使用0.9.9及以上的版本,需要在声明矩阵时传入参数1,例如glm::mat4 mat(1.0f)。

向着色器中输入矩阵

glm::value_ptr函数

GLM的glm::value_ptr()函数可以返回一个数组,其中按列优先储存了矩阵的元素。例如:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值