通过几何着色器传递不同的变量

3
我在我的OpenGL应用程序中引入了一个几何着色器,我的着色器有很多“varying”变量,我将它们从顶点着色器传递到片段着色器。现在,引入几何着色器后,我必须为每个顶点在几何着色器中手动传递每个varying值。是否有一种方法可以避免这样做,自动完成这些操作呢?
2个回答

3

不需要。

一旦你在管道中引入几何着色器,如果你想将变量从顶点着色器传递到片段着色器,你必须手动传递它们,创建一个来自顶点着色器的输入变量和一个到片段着色器的输出变量。我不知道你使用的GLSL版本是哪个,但你可能想查看GLSL 3.30规范第4.3.4节。


3
不可以,因为除了一个空的几何着色器之外,没有任何合理的方法可以做到这一点。如果您的几何着色器没有对几何体做任何事情,那么为什么要先启用它呢?通常情况下,几何着色器接受一些顶点作为输入,并产生不同数量的顶点作为输出。因此,“自动”映射哪些输入顶点到哪些输出顶点是不确定的。

是的,你说得对。在我的情况下,几何着色器实际上除了丢弃顶点之外并没有对几何体做任何事情,所以这是有意义的。但我明白几何着色器的应用范围要广得多,因此我的想法是不可行的。感谢解释。 - SimpleMan
有一种非常有用的几何着色器,它不会改变几何形状。几何着色器是唯一可以对一个图元中的所有顶点进行计算的地方。"单次绘制线框"技术利用这些信息添加额外的信息,而不改变几何形状。使用这种技术时,必须将所有其他值传递过去有点麻烦。然而,我们必须这样做,这就是生活。 - David Jeske

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接