C++ OpenGL-GLM和GLSL,它们有什么不同?
我开始学习OpenGL、GLM和GLSL,我有点困惑。我会在这里说我到目前为止所理解的和我的问题,所以请随时纠正我C++ OpenGL-GLM和GLSL,它们有什么不同?,c++,opengl,matrix,glsl,glm-math,C++,Opengl,Matrix,Glsl,Glm Math,我开始学习OpenGL、GLM和GLSL,我有点困惑。我会在这里说我到目前为止所理解的和我的问题,所以请随时纠正我 迄今为止,我看到GLM扩展了GLSL文档,提供了更多的数学函数,但是由于GLM是基于C++的,它将在CPU上运行,另一方面,GLSL直接在GPU中运行,所以我猜想矩阵数学在GLSL中的速度更快,因为它可以使用GPU的电源并行地执行所有的数学。那么为什么要使用GLM呢?它们是完全不同的东西: GLSL是用于编写在GPU上运行的着色器程序的语言。它是C的一个变体,带有一些特定于Ope
迄今为止,我看到GLM扩展了GLSL文档,提供了更多的数学函数,但是由于GLM是基于C++的,它将在CPU上运行,另一方面,GLSL直接在GPU中运行,所以我猜想矩阵数学在GLSL中的速度更快,因为它可以使用GPU的电源并行地执行所有的数学。那么为什么要使用GLM呢?
它们是完全不同的东西:- GLSL是用于编写在GPU上运行的着色器程序的语言。它是C的一个变体,带有一些特定于OpenGL的特殊扩展。但就您的应用程序而言,GLSL着色器只是要传递到OpenGL库的不透明数据文件;它完全独立于主机程序
GLM不是GLSL的替代品或替代品。它的目的是帮助在GPU上进行没有意义的计算—例如构建顶点着色器使用的投影矩阵,或计算3D空间中点之间的距离。它们是两件完全不同的事情:
- GLSL(OpenGL着色语言)是OpenGL(基于C的语法)用于在GPU上运行程序的语言,称为着色器,您知道着色器的用途。它们甚至不是程序的一部分,而是存储在计算机中的两个文件,在运行时传递给OpenGL,然后才进行编译。它提供高级数学有两个原因:无法加载库,因为这是图形编程,与数学非常相关
- GLM(OpenGL Maple)是一个C++库,用于扩展C++的数学能力,它与图形编程中常用的函数和类型相结合,所有这些都将在CPU上执行,并且独立于OpenGL。
短版本:GLM是针对你的程序,GLSL的数学能力是为着色器编写的。
GLM是C++的数学库,而GLSL是一种编程语言。您可以使用glm进行简单的数学计算,然后将数据上载到gpu,以便glsl可以使用它。@AntonD但它被称为OpenGL Mathematics(glm),我猜它与图形操作有关。它的名称中有OpenGL,因为它遵循相同的命名约定,例如在着色器中有“vec3”使用glm还可以创建一个对象“vec3”