GLSL无需插值即可编译着色器(平面)

时间:2015-04-24 18:28:16

标签: c++ glsl fragment-shader vertex-shader

我从单个顶点/索引缓冲区中绘制了一个包含多个网格的完整对象,它们具有不同的纹理。因此,我想到将纹理的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;

我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

好的,所以这似乎是我做出的错误假设。片段着色器还需要flat关键字。 (我认为顶点着色器平面属性会使uint在下一级变平)

所以,这就像片段着色器一样:flat in uint frag_MeshID; (使用顶点着色器:flat out uint frag_MeshID;