我知道如何使用输入/输出变量和变量变量.我完全清楚使用输入/输出变量更好,因为它不被弃用.
这是一个非常小的事情,但我真的不明白为什么他们改变了这一点.以前我可以将代码放在一个着色器中,将其复制并粘贴到另一个着色器中,这样就可以了.现在我必须将它粘贴到另一个并将所有内容更改为"out"(而不是"in").
我不介意这样做,我只是对进/出变量是否有优势感到非常好奇,如果没有,为什么Khronos组会改变它.
这是因为不再有两个着色器阶段而改变了.OpenGL 3.2引入了几何着色器,它是Vertex和Fragment着色器之间的可选阶段.它从VS获取输入并向FS提供输出.
那么......当你只有一个关键词时,你会怎么做?您无法将VS和FS中的接口变量复制并粘贴到同一GS中.您需要某种方法来指定从VS输入命名变量或输出到FS.不,你不能只说一个变量都是.
另外,要注意GS中输入变量的性质.他们排成一列.所以你不能只将VS varying
定义复制到GS中; 无论如何你必须改变它们.
还应注意,除了几何着色器之外,它们还添加了输入/输出接口块,它将多个接口变量组合在一个标题下.有了这些,您不必更改几个in
/ out
对; 你只需改变一个.