我看到很多不同的片段着色的,片段着色器如何知道用於像素顏色的變量?
#version 130
out vec4 flatColor;
void main(void)
{
flatColor = vec4(0.0,1.0,0.0,0.5);
}
而且它們都使用了「出彩」不同的變量(在這種情況下flatColor
)。那麼OpenGL如何知道你想要做什麼?
我猜這是可行的,因爲flatColor
是唯一定義爲out
的變量,但您可以添加更多out
變量不是嗎?或者只是會崩潰?
其實,作爲一個測試,我只是跑這樣的:
#version 330
in vec2 TexCoord0;
uniform sampler2D TexSampler;
out vec4 x;
out vec4 y;
void main()
{
y = texture2D(TexSampler, TexCoord0.xy);
}
它好工作我是否使用x
或y
。
此外,我們有一個預定義的gl_FragColor
。有什麼區別,爲什麼人們通常會堅持使用自己的變量?
希望我可以給+1。壯觀的答案。我想知道如何片段輸出位置工作。 :) – kevintodisco 2012-02-10 06:07:00
啊..所以他們不推薦使用'gl_FragColor',而是讓你更靈活地選擇要寫入哪個緩衝區?說得通。再次感謝! – mpen 2012-02-10 06:08:51
@Mark:「棄用」意味着「您仍然可以使用它,但可能會在更高版本中刪除它。」 「刪除」意味着*刪除*。它們是有區別的。那些在GL 3.0中被標記爲廢棄的內容在3.1中被刪除了**(除了幾件事情之外)。 – 2012-02-10 06:58:55