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;
)
我正在从单个 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;
)