VOOZH about

URL: https://ru.wikipedia.org/wiki/OpenGL_Mathematics

⇱ OpenGL Mathematics — Википедия


Перейти к содержанию
Материал из Википедии — свободной энциклопедии
Текущая версия страницы пока не проверялась опытными участниками и может значительно отличаться от версии, проверенной 18 октября 2015 года; проверки требуют 9 правок.
OpenGL Mathematics
👁 Логотип программы OpenGL Mathematics
Тип библиотека
Автор G-Truc Creation (Christophe Riccio)
Написана на C++
Операционная система Кроссплатформенное программное обеспечение
Последняя версия 1.0.1 (26 февраля 2024)
Лицензия MIT License
Сайт glm.g-truc.net

GLM (OpenGL Mathematics — математика для OpenGL) — библиотека для OpenGL, предоставляющая программисту на C++ структуры и функции, позволяющие использовать данные для OpenGL[источник не указан 3905 дней].

Одна из особенностей GLM состоит в том, что его реализация основана на спецификации GLSL (OpenGL Shading Language)[1].

Исходный код GLM распространяется под MIT License.

Примеры кода

[править | править код]
// Вычислить нормаль к треугольнику:
#include<glm/glm.hpp>

voidcomputeNormal(triangle&Triangle)
{
glm::vec3const&a=Triangle.Position[0];
glm::vec3const&b=Triangle.Position[1];
glm::vec3const&c=Triangle.Position[2];
Triangle.Normal=glm::normalize(glm::cross(c-a,b-a));
}
// Матричные преобразования:
#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

voidtransform()
{
glm::mat4Projection=glm::perspective(45.0f,4.0f/3.0f,0.1f,100.f);
glm::mat4ViewTranslate=glm::translate(glm::mat4(1.0f),glm::vec3(0.0f,0.0f,-Translate));
glm::mat4ViewRotateX=glm::rotate(ViewTranslate,Rotate.y,glm::vec3(-1.0f,0.0f,0.0f));
glm::mat4View=glm::rotate(ViewRotateX,Rotate.x,glm::vec3(0.0f,1.0f,0.0f));
glm::mat4Model=glm::scale(glm::mat4(1.0f),glm::vec3(0.5f));
glm::mat4MVP=Projection*View*Model;
glUniformMatrix4fv(LocationMVP,1,GL_FALSE,glm::value_ptr(MVP));
}

Примечания

[править | править код]
  1. Архивированная копия. Дата обращения: 26 февраля 2012. Архивировано 11 января 2012 года.