OpenGL - GLM和GLSL,它们有何不同

OpenGL - GLM and GLSL, how are they different?

本文关键字:何不同 GLSL GLM OpenGL      更新时间:2023-10-16

我开始学习OpenGL、GLM和GLSL,我有点困惑。我将在这里说出到目前为止我所理解的内容和我的问题,所以请随时纠正我。

到目前为止,我看到 GLM 扩展了 GLSL 文档,提供了更多的数学函数,但由于 GLM 是基于C++的,它将在 CPU 上运行,另一方面,GLSL 直接在 GPU 中运行,所以我想矩阵数学在 GLSL 中要快得多,因为它可以使用 GPU 的强大功能并行完成所有数学运算。那么为什么要使用 GLM?

它们是完全不同的东西:

  • GLSL 是用于编写在 GPU 上运行的着色器程序的语言。 它是C的变体,具有一些特殊的OpenGL特定扩展。 但就您的应用程序而言,GLSL 着色器只是一个要传递给 OpenGL 库的不透明数据文件;它完全独立于主机程序。
  • GLM 是一个C++库,用于在 CPU 上处理矢量数据。 为了方便起见,它遵循与GLSL类似的命名约定,但它完全独立于OpenGL。

GLM 并不是 GLSL 的替代品或替代品。 它旨在帮助在GPU上进行有意义的计算 - 例如构建供顶点着色器使用的投影矩阵,或计算3D空间中点之间的距离。

它们是

两个完全不同的东西:

  • GLSL(OpenGL 着色语言)是 OpenGL(基于 C 的语法)用于在 GPU 上运行程序的语言,称为着色器,您知道它的用途。它们甚至不是程序的一部分 - 相反,它们是存储在计算机中的两个文件,在运行时传递给OpenGL,然后才进行编译。它提供高级数学有两个原因:无法加载库,因为这是图形编程,这与数学非常相关。
  • GLM(OpenGL数学)是一个C++库,用于通过图形编程中常用的函数和类型扩展C++的数学功能 - 所有这些都将在CPU上执行,并且独立于OpenGL。

GLM之所以在名称中使用OpenGL,是因为它是在他们的脑海中以图形编程构建的(换句话说,是为OpenGL制作的)。

简短版本:GLM 适用于您的程序,GLSL 的数学功能适用于您的着色器。