直觉上我会说是的,因为否则这整个“遵循GLSL规范”的事情并不会真正有意义。虽然我没有在任何地方明确提到这一点。在代码中,我问是否
glm::someType something{...};
(float*)&something === glm::value_ptr(something)
(当使用双变量或半变量时,当然不会浮动*,但是你明白了。)
答案 0 :(得分:2)
“遵循GLSL规范”事情真的没有那么大意义。
GLSL未指定内存布局。它只是定义了各种类型的词汇结构,比如它们所具有的元素。 GLM遵循相同的词法结构,但它可以遵循任何最适合它的内存布局。
请注意,GLM和GLSL之间唯一的接口是glUniform和glVertexAttrib [Pointer]调用,这些接口的内存布局是众所周知的。只要GLM与那些合作,一切都很好。