1. 程式人生 > >OpenGL Mathematics(GLM)

OpenGL Mathematics(GLM)

OpenGl中在進行圖形變換的時候需要使用幾何數學庫,這裡使用第三方數學庫GLM。


OpenGL Mathematics (GLM) 是基於OpenGL著色語言(GLSL)規範的圖形軟體的標頭檔案C ++數學庫。

GLM提供的類和函式使用與GLSL相同的命名約定和功能設計和實現,因此任何知道GLSL的人都可以在C ++中使用GLM。

這個專案不限於GLSL的功能。基於GLSL擴充套件約定的擴充套件系統提供擴充套件能力:矩陣變換,四元數,資料打包,隨機數,噪聲等等。

這個庫與OpenGL完美地工作,但它也確保與其他第三方庫和SDK的互操作性。它是軟體渲染(光線追蹤/光柵化),影象處理,物理模擬和任何需要簡單方便的數學庫的開發上下文的良好候選。

GLM是用C ++ 98編寫的,但是當編譯器支援時可以利用C ++ 11。它是一個沒有依賴的平臺獨立庫,它正式支援以下編譯器:

    ● 蘋果Clang 6.0及更高版本
    ● GCC 4.7及以上
    ● 英特爾C ++ Composer XE 2013及更高版本
    ● LLVM 3.4及更高版本
    ● Visual C ++ 2013及更高版本
    ● CUDA 7.0及更高版本(實驗版)
    ● 任何C ++ 11編譯器

有關GLM的更多資訊,請檢視手冊和API參考文件。 原始碼和文件根據Happy Bunny License (Modified MIT)或MIT許可證授權。

感謝您通過提交錯誤報告和功能請求的問題為專案做出貢獻。 歡迎任何反饋在[email protected]


使用案例:

#include <glm/vec3.hpp> // glm::vec3
#include <glm/vec4.hpp> // glm::vec4
#include <glm/mat4x4.hpp> // glm::mat4
#include <glm/gtc/matrix_transform.hpp> // glm::translate, glm::rotate, glm::scale, glm::perspective
#include <glm/gtc/constants.hpp> // glm::pi

glm::mat4 camera(float Translate, glm::vec2 const & Rotate)
{
    glm::mat4 Projection = glm::perspective(glm::pi<float>() * 0.25f, 4.0f / 3.0f, 0.1f, 100.f);
    glm::mat4 View = glm::translate(glm::mat4(1.0f), glm::vec3(0.0f, 0.0f, -Translate));
    View = glm::rotate(View, Rotate.y, glm::vec3(-1.0f, 0.0f, 0.0f));
    View = glm::rotate(View, Rotate.x, glm::vec3(0.0f, 1.0f, 0.0f));
    glm::mat4 Model = glm::scale(glm::mat4(1.0f), glm::vec3(0.5f));
    return Projection * View * Model;
}