OpenGL學習筆記(4) GLM庫的使用


OpenGL和DirextX不一樣,沒有內置的數學庫,於是我們需要找一個第三方庫,按照LearnOpenGL的教程我們使用GLM庫,可以到他們的官網下載

glm常用的數據類型

  • vec2 二維向量
  • vec3 三維向量
  • vec4 四維向量
  • mat2 二階矩陣
  • mat3 三階矩陣
  • mat4 四階矩陣

常用的函數

  • glm::radians() 角度制轉弧度制
  • glm::translate() 創建一個平移矩陣,第一個參數是目標矩陣,第二個參數是平移的方向向量
  • glm::rotate() 創建一個將點繞某個軸旋轉x弧度的旋轉矩陣,第一個參數是弧度,第二個參數是旋轉軸
  • glm::scale() 創建一個縮放矩陣,第一個參數是目標矩陣,第二個參數是縮放系數

創建裁剪矩陣的函數,位於glm/ext/matrix_clip_space.hpp,這個文件存放裁剪空間相關的API

  • glm::ortho(float left, float right, float bottom, float top, float zNear, float zFar); 前兩個參數指定了平截頭體的左右坐標,第三和第四參數指定了平截頭體的底部和頂部。通過這四個參數我們定義了近平面和遠平面的大小,然后第五和第六個參數則定義了近平面和遠平面的距離。
  • glm::perspective(float fovy, float aspect, float zNear, float zFar); 第一個參數為視錐上下面之間的夾角,第二個參數為寬高比,即視窗的寬/高,第三第四個參數分別為近截面和遠界面的深度

其實上面提到的大多數函數基本都是模板函數,只不過我們平時習慣用float的特化,為了測試GLM庫,可以試一下簡單的對一個點進行位移的操作

	glm::vec4 vec(1.0f, 0.0f, 0.0f, 1.0f);//創建一個點
	glm::mat4 trans = glm::mat4(1.0f);//創建單位矩陣
	trans = glm::translate(trans, glm::vec3(1.0, 1.0, 1.0));//設置平移矩陣
	vec = trans * vec;//變換矩陣左乘點向量,獲得變換后的點
	cout << vec.x << vec.y << vec.z << endl;
	system("pause");

將一個點(1, 0, 0)移動(1, 1, 1)
在這里插入圖片描述
參考自LearnOpenGL


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM