GLSL无法编译没有插值的着色器(平面)

GLSL can't compile a shader without interpolation (flat)

我正在从单个 vertex/index 缓冲区中绘制具有多个网格的完整对象,并且它们具有不同的纹理。因此,我想到将纹理 ID 与顶点一起从顶点着色器传递到片段着色器中的片段。问题是禁用插值。我将 GLSL ver 3.3 与 SDL2 一起使用,并在 MingW 上闪闪发光。

我已经在顶点着色器中尝试了 flat out uint frag_MeshID; 而不是 out uint frag_MeshID;,但是在编译片段着色器时我仍然得到这个错误:

'frag_MeshID' : int/uint varying in is not flat interpolated

这是我对应的片段着色器片段:in uint frag_MeshID;

我是不是漏掉了什么?

好的,这似乎是我做出的错误假设。片段着色器也需要 flat 关键字。 (我认为顶点着色器平坦属性将使下一级的单位平坦)

所以,这作为片段着色器工作:flat in uint frag_MeshID; (使用顶点着色器:flat out uint frag_MeshID;