c++ - 包含/使用 GLM 库时出现问题

标签 c++ glm-math

我无法在我的 C++ 项目中正确包含/使用 glm 数学库 ( http://glm.g-truc.net/ )。由于 glm 是一个“仅 header ”库,我想我可以将它包含在这一行中:

#include "glm/glm.hpp"

起初这似乎可行,因为我可以创建和使用矩阵和 vector 。然而,当我尝试使用 glm::translate(...) 函数时,我得到了这个错误:

error: ‘translate’ is not a member of ‘glm’

在 GLM 网站上,他们建议包括带三角括号的库,如下所示:

#include <glm/glm.hpp>

...但是考虑到它在项目目录结构中,我可以用另一种方式包含它是不是正确的想法?

我已经设置了下面的测试来说明我遇到的问题。 glm 文件夹位于 testglm.cpp 文件旁边。

#include <iostream>

#include "glm/glm.hpp"

using namespace std;

int main(void) {

    // works:
    glm::mat4 testMatrix1 = glm::mat4(5.0f) * glm::mat4(2.0f);

    cout << testMatrix1[0][0] << endl; // output: 10

    // doesn't work - (error: ‘translate’ is not a member of ‘glm’):
    glm::mat4 testMatrix2 = glm::translate(glm::mat4(1.0f), glm::vec3(1.0f));

}

我在 osx 上从终端使用这个构建命令构建这个测试:

g++ -o bin/glm_test src/testglm.cpp

我不确定我的问题是否与我如何包含库、如何使用它或如何构建项目有关。谷歌没有给我任何关于该错误消息的点击,所以我想知道我是否做错了根本性的事情。建议将不胜感激。谢谢。

最佳答案

yngum 的建议让我更仔细地查看了文档,我意识到 glm::translate 实际上是扩展 glm 核心的模块的一部分。我需要包括 glm 核心和 matrix_transform 扩展:

#include "glm/glm.hpp"
#include "glm/gtc/matrix_transform.hpp"

现在测试示例可以运行了。 (我还注意到我在测试中也犯了一个愚蠢的错误,这会阻止它编译。现在已经在原始问题中修复了这个问题,以便 future 的读者可能会因为同样的原因遇到我遇到的问题。 )

关于c++ - 包含/使用 GLM 库时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19327581/

相关文章:

c++ - Clang - 获取 SubstTemplateTypeParm 完整模板信息

c++ - Polygon Offset/Minkowski sum with a sphere 算法

c++ - 无法在 OpenGL 中获取矩形的 3D View

c++ - OpenGL 程序不会显示任何对象?

c++ - 如何使用 glm::lookAt() 旋转对象?

c++ - 如何将UTF-8文本从文件转换为可以迭代的容器并检查C++中每个符号是否为字母数字?

c++ - 使用返回对象的函数处理错误

c++ - 返回变量类型取决于 sizeof... 参数包

c++ - 运行时黑屏,没有错误

c++ - 如何为球形物体和三角形地形提供高效的碰撞检测和响应?