加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – GLM是否与GLload和GCC兼容

发布时间:2020-12-16 07:04:51 所属栏目:百科 来源:网络整理
导读:我目前正在设置我的OpenGL’框架’,并且已经决定使用GLload,主要用于扩展加载,但它还具有证明正确’gl’名称空间的额外好处.因此,al gl *函数反而用作gl :: *,例如: glUniformMatrix4fv(...) // instead of thisgl::UniformMatrix4fv(...) // use this 我也
我目前正在设置我的OpenGL’框架’,并且已经决定使用GLload,主要用于扩展加载,但它还具有证明正确’gl’名称空间的额外好处.因此,al gl *函数反而用作gl :: *,例如:

glUniformMatrix4fv(...) // instead of this
gl::UniformMatrix4fv(...) // use this

我也想利用glm,根据我的理解,它应该像包含glm / glm.hpp一样简单,并确保告诉我的编译器在哪里找到它.但似乎它可能无法与glload直接兼容,因为当我尝试使用它时会出现以下错误.

In file included from glm/glm/fwd.hpp:32:0,from glm/glm/glm.hpp:91,from src/main.cpp:3:
glm/glm/core/type_int.hpp:220:2: error: redefinition of ‘struct glm::detail::is_int<long int>’
glm/glm/core/type_int.hpp:219:2: error: previous definition of ‘struct glm::detail::is_int<long int>’
glm/glm/core/type_int.hpp:250:2: error: redefinition of ‘struct glm::detail::is_uint<long unsigned int>’
glm/glm/core/type_int.hpp:249:2: error: previous definition of ‘struct glm::detail::is_uint<long unsigned int>’

从查看type_int.hpp,您可以看到它使用宏,首先分别使用’signed long’和’unsigned long’,然后使用’highp_int_t’和’highp_uint_t'(导致此错误).这两个重新定义的类型是’int64’和’uint64′,其确切类型依赖于编译器.当我使用GCC时,我相信这意味着我应该将这些类型视为“长签长”和“长签长”.

如果我注释掉这两行,那么一切似乎都很好.当然,我相信迟早会发生这样的事情.

查找类似的问题带我去this答案,基本上说glm不支持使用-std = C 11构建,这对我来说是不可接受的;但这个答案已经快两年了,glm的网站确实声称完全符合C 11.

作为参考,我使用的是gcc版本4.7.3,glm版本0.9.5(从github回购中删除),glsdk版本0.4.4的glload(我已经删除了glsdk的所有其他’模块’,留下我justglload).

解决方法

好吧,使用版本0.9.5的GLM似乎是一个问题.

值得庆幸的是我使用了一个git子模块,所以我能够使用0.9.4版本进行测试.似乎版本0.9.4对我来说很好.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读