2012-04-05 82 views
3

我向我的OpenGL應用程序引入了幾何着色器。我的着色器有很多「變化」的變量,我從頂點着色器傳遞給片段着色器。現在,在介紹幾何着色器之後,我必須手動傳遞每個頂點的幾何着色器中的每個變化值。有沒有辦法避免這種情況,並「自動」做事情?通過幾何着色器傳遞變量變量

回答

2

只要你在管道引進幾何着色器,如果你想從頂點着色器,你必須手動將它們傳遞片段着色器傳遞變量,創建從頂點的輸入變量着色器和片段着色器的輸出變量。我不知道您使用的是哪種GLSL版本,但您可能需要查看GLSL 3.30 spec的第4.3.4節。

2

不,因爲除了noop幾何着色器之外沒有任何明智的方法可以做到這一點,並且幾何着色器沒有對幾何做任何事情,爲什麼它首先啓用?

通常,幾何着色器將多個頂點作爲輸入,並生成(不同)頂點數作爲輸出。那麼哪個輸入頂點應該被自動映射到哪個輸出頂點?

+0

是的,你是對的。在我的案例中,除了丟棄頂點之外,幾何着色器實際上不會對幾何做任何事情,所以它在那裏很有意義。但我明白幾何着色器的應用要廣泛得多,因此我想要的是不可行的。感謝您的解釋。 – SimpleMan 2012-04-06 18:34:52

+0

有幾個非常有用的幾何着色器不會改變幾何。幾何着色器是基元所有頂點可用於計算的唯一位置。 「單通線框」技術使用這些信息添加附加信息而不改變幾何圖形。使用這種技術時,要傳遞所有其他值有點煩人。但是,我們必須這樣做,因爲cest'la'vie。 – 2013-09-20 07:12:00