- OpenGL Mathematics
-
GLM (OpenGL Mathematics) is an OpenGL utility library providing to C++ programmer all classes and functions allowing to use data for OpenGL [1].
One GLM characteristic is that GLM implementation is based on GLSL (OpenGL Shading Language) specification [2].
GLM source code is available under the MIT license.
Code samples
// Compute a triangle normal: #include <glm/glm.hpp> void computeNormal(triangle & Triangle) { glm::vec3 const & a = Triangle.Position[0]; glm::vec3 const & b = Triangle.Position[1]; glm::vec3 const & c = Triangle.Position[2]; Triangle.Normal = glm::normalize(glm::cross(c - a, b - a)); }
// Matrix transform: #include <glm/glm.hpp> // glm::vec3, glm::vec4, glm::ivec4, glm::mat4 #include <glm/gtc/matrix_projection.hpp> // glm::perspective #include <glm/gtc/matrix_transform.hpp> // glm::translate, glm::rotate, glm::scale #include <glm/gtc/type_ptr.hpp> // glm::value_ptr void transform() { glm::mat4 Projection = glm::perspective(45.0f, 4.0f / 3.0f, 0.1f, 100.f); glm::mat4 ViewTranslate = glm::translate(glm::mat4(1.0f), glm::vec3(0.0f, 0.0f, -Translate)); glm::mat4 ViewRotateX = glm::rotate(ViewTranslate, Rotate.y, glm::vec3(-1.0f, 0.0f, 0.0f)); glm::mat4 View = glm::rotate(ViewRotateX, Rotate.x, glm::vec3(0.0f, 1.0f, 0.0f)); glm::mat4 Model = glm::scale(glm::mat4(1.0f), glm::vec3(0.5f)); glm::mat4 MVP = Projection * View * Model; glUniformMatrix4fv(LocationMVP, 1, GL_FALSE, glm::value_ptr(MVP)); }
References
External links
- (English) http://glm.g-truc.net
- (English) https://sourceforge.net/projects/ogl-math/
Categories:
Wikimedia Foundation. 2010.