为什么GLSL变化为进/出?

时间:2016-01-06 07:14:08

标签: opengl glsl shader

我知道如何使用输入/输出变量和变量变量。我完全清楚使用输入/输出变量更好,因为它不被弃用。

这是一个非常小的事情,但我真的不明白为什么他们改变了这一点。以前我可以将代码放在一个着色器中,将其复制并粘贴到另一个着色器中,这样就可以了。现在我必须将它粘贴到另一个并将所有内容更改为“out”(而不是“in”)。

我不介意这样做,我对进/出变量是否有优势感到非常好奇,如果没有,为什么Khronos组会改变它。

1 个答案:

答案 0 :(得分:15)

这已被更改,因为不再有two shader stages。 OpenGL 3.2引入了几何着色器,它是Vertex和Fragment着色器之间的可选阶段。它从VS获取输入并向FS提供输出。

那么......当你只有一个关键词时,你会怎么做?您无法将VS和FS中的接口变量复制并粘贴到同一GS中。您需要某种方法来指定从VS输入命名变量或输出到FS。不,你不能只说变量是两者

另外,请注意GS中的nature of the input variables。他们排成一列。所以你不能只将VS varying定义复制到GS中;无论如何你必须改变它们。

还应该注意,除了几何着色器之外,它们还添加了input/output interface blocks,它将多个接口变量组合在一个标题下。有了这些,您不必更改多个in / out对;你只需换一个。