c – GLM是否与GLload和GCC兼容
我目前正在设置我的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对我来说很好. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |