通过几何着色器传递变量变量
问题描述:
我向我的OpenGL应用程序引入了几何着色器。我的着色器有很多“变化”的变量,我从顶点着色器传递给片段着色器。现在,在介绍几何着色器之后,我必须手动传递每个顶点的几何着色器中的每个变化值。有没有办法避免这种情况,并“自动”做事情?通过几何着色器传递变量变量
答
号
只要你在管道引进几何着色器,如果你想从顶点着色器,你必须手动将它们传递片段着色器传递变量,创建从顶点的输入变量着色器和片段着色器的输出变量。我不知道您使用的是哪种GLSL版本,但您可能需要查看GLSL 3.30 spec的第4.3.4节。
答
不,因为除了noop几何着色器之外没有任何明智的方法可以做到这一点,并且几何着色器没有对几何做任何事情,为什么它首先启用?
通常,几何着色器将多个顶点作为输入,并生成(不同)顶点数作为输出。那么哪个输入顶点应该被自动映射到哪个输出顶点?
是的,你是对的。在我的案例中,除了丢弃顶点之外,几何着色器实际上不会对几何做任何事情,所以它在那里很有意义。但我明白几何着色器的应用要广泛得多,因此我想要的是不可行的。感谢您的解释。 – SimpleMan 2012-04-06 18:34:52
有几个非常有用的几何着色器不会改变几何。几何着色器是基元所有顶点可用于计算的唯一位置。 “单通线框”技术使用这些信息添加附加信息而不改变几何图形。使用这种技术时,要传递所有其他值有点烦人。但是,我们必须这样做,因为cest'la'vie。 – 2013-09-20 07:12:00