そうでなければ、この「GLSL仕様に従う」ということ全体があまり意味をなさないからです。ただし、これが明示的に言及されている場所は見つかりませんでした。コードでは、私は
glm::someType something{...};
(float*)&something === glm::value_ptr(something)
(もちろん double または half バリアントを使用する場合は float* ではありませんが、要点はわかります)。
「GLSL仕様に従う」ということは、あまり意味がありません。
GLSL はメモリ レイアウトを指定しません。さまざまな型の字句構造を定義するだけで、どの要素を持っているかなどです。GLM は同じ字句構造に従いますが、GLM に最適なメモリ レイアウトに従うことができます。
GLM と GLSL の間の唯一のインターフェースは glUniform と glVertexAttrib[Pointer] 呼び出しであり、それらのメモリ レイアウトはよく知られていることに注意してください。そして、GLM がそれらで動作する限り、すべて問題ありません。