2013-11-13 3 views
3

Я начинаю узнавать о OpenGL и GLM и GLSL, и я немного запутался. Я скажу здесь, что я понял до сих пор, и мои вопросы, поэтому, пожалуйста, не стесняйтесь поправлять меня в любое время.OpenGL - GLM и GLSL, как они отличаются?

До сих пор я вижу, что GLM расширяет документацию GLSL, предоставляя больше математических функций, но поскольку GLM - это C++, она будет работать на процессоре, с другой стороны, GLSL запускается непосредственно в GPU, поэтому я предполагаю, что матричная математика является быстрее в GLSL, так как он может использовать мощность GPU для выполнения всей математики параллельно. Итак, зачем использовать GLM?

+1

glm - это математическая библиотека для C++, а glsl - язык программирования. вы используете glm для вычисления математических вычислений, а затем загружаете данные в gpu, чтобы glsl мог его использовать. –

+0

@AntonD, но это называется OpenGL Mathematics (GLM), я догадался, что это как-то связано с графическими манипуляциями. – mFeinstein

+0

он имеет opengl в своем имени, потому что он следует тем же правилам именования, например. в шейдере у вас есть «vec3» и с помощью glm вы также можете создать объект «vec3» –

ответ

11

Они совершенно разные вещи:

  • GLSL это язык, используемый для написания шейдерных программ, которые запускаются на GPU. Это вариант C с некоторыми специальными расширениями OpenGL. Но что касается вашего приложения, шейдер GLSL - это просто непрозрачный файл данных, который должен быть передан в библиотеку OpenGL; он полностью не зависит от хост-программы.
  • GLM - это библиотека C++ для работы с векторными данными на CPU. Для удобства он следует аналогичным соглашениям об именах с GLSL, но он полностью не зависит от OpenGL.

GLM не означает замену или альтернатив GLSL. Он призван помочь с вычислениями, которые не имеют смысла делать на GPU - такие вещи, как построение матрицы проекций, которые будут использоваться вашими вершинными шейдерами, или вычисление расстояний между точками в трехмерном пространстве.

1

Они две совершенно разные вещи:

  • GLSL (OpenGL Shading Language) является язык, используемый OpenGL (синтаксис на основе C) для запуска программ на GPU, называется шейдеры, которые вам знать цель. Они даже не являются частью вашей программы, вместо этого они представляют собой два файла, хранящихся на вашем компьютере, которые во время выполнения передаются в OpenGL, и только после этого они компилируются. Он обеспечивает расширенную математику по двум причинам: нет возможности загружать библиотеки, и потому что это графическое программирование, что очень связано с математикой.
  • GLM (OpenGL Mathematics) - это библиотека C++, используемая для расширения математических возможностей C++ с функциями и типами, которые обычно используются в графическом программировании - все это будет выполняться на процессоре и не зависит от OpenGL.

Причина, по которой GLM имеет OpenGL в своем названии, состоит в том, что он был построен с графическим программированием в их умах (другими словами, для OpenGL).

Краткая версия: GLM для вашей программы, математические возможности GLSL для вашего шейдера.

Смежные вопросы