Opengl 为什么GLSL变化为输入/输出?

Opengl 为什么GLSL变化为输入/输出?,opengl,glsl,shader,Opengl,Glsl,Shader,我知道如何使用输入/输出变量和可变变量。我完全知道使用in/out变量更好,因为它没有被弃用 这是一件很小的事情,但我真的不明白他们为什么要改变这一点。以前,我可以将代码放在一个着色器中,复制并粘贴到另一个着色器中,这样就可以了。现在我必须将它粘贴到另一个中,并将所有内容更改为“out”(而不是“in”) 我并不介意这样做,我只是很好奇输入/输出变量是否有优势,如果没有优势,为什么Khronos集团会改变它。这是因为不再有优势。OpenGL 3.2引入了几何体着色器,它是顶点着色器和片段着色器之

我知道如何使用输入/输出变量和可变变量。我完全知道使用in/out变量更好,因为它没有被弃用

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


我并不介意这样做,我只是很好奇输入/输出变量是否有优势,如果没有优势,为什么Khronos集团会改变它。

这是因为不再有优势。OpenGL 3.2引入了几何体着色器,它是顶点着色器和片段着色器之间的可选阶段。它从VS获取输入,并向FS提供输出

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

此外,请注意GS中的。它们排列整齐。因此,您不能只将VS
变量的定义复制到GS中;无论如何,你必须改变它们


还应注意的是,它们与几何体着色器一起添加,将多个接口变量分组到一个标题下。有了这些,您不必在
/
对中更改多个
;你只要换一个。

谢谢,这是一个非常好的答案。我只使用了顶点和碎片着色器。多亏了你,我可能会去看看D