0

直觉上我会说是的,因为否则这整个“遵循 GLSL 规范”的事情并没有那么大的意义。不过,我没有在任何地方明确提到这一点。在代码中,我问是否

glm::someType something{...};
(float*)&something === glm::value_ptr(something)

(当然不是 float* 使用 double 或 half 变体时,但你明白了)。

4

1 回答 1

2

“遵循 GLSL 规范”的事情并没有那么大的意义。

GLSL 没有指定内存布局。它仅仅定义了各种类型的词汇结构,比如它们有哪些元素。GLM 遵循相同的词法结构,但它可能遵循最适合它的内存布局。

请注意,GLM 和 GLSL 之间的唯一接口是 glUniform 和 glVertexAttrib[Pointer] 调用,它们的内存布局是众所周知的。只要 GLM 与这些合作,一切都很好。

于 2013-02-03T19:26:17.567 回答