在我的片段着色器可以裝入紋理,那麼這樣做:如何獲取片段着色器中的像素信息?
uniform sampler2D tex;
void main(void) {
vec4 color = texture2D(tex, gl_TexCoord[0].st);
gl_FragColor = color;
}
這將當前像素紋理的顏色值。我可以修改這些,等等,它運作良好。
但有幾個問題。我如何知道「我是哪個」像素?例如,假設我想將像素100,100(x,y)設置爲紅色。其他一切都是黑色的。我該怎麼做:
「if currentSelf.Position()==(100,100); then color = red; else color = black?」
?
我知道如何設置顏色,但是如何獲得「我的」位置?
其次,我如何從鄰居像素獲取值?
我嘗試這樣做:
vec4 nextColor = texture2D(tex, gl_TexCoord[1].st);
但並不清楚它是什麼回來?如果我像素100,100;我如何獲得101,100或100,101的值?
打我給它;所有我不得不說的與這個略有不同的是,鏈接http://www.opengl.org/sdk/docs/manglsl/xhtml/gl_FragCoord.xml對'gl_FragCoord'進行了更詳細的描述,中間渲染到紋理,如果他真的想要根據輸出緩衝區中的多個相鄰像素的組合計算輸出片段。 – Tommy 2012-03-19 23:35:14
基本上我想要做的是,如果像素x,y在其中有紅色的鄰居,在x,y中增加紅色。有沒有教程可以解釋如何做到這一點? – user697111 2012-03-19 23:54:08
@ user697111:你想實現一個工作在紋理的紅色通道上的「膨脹」濾鏡。谷歌這些關鍵字,你應該找到很多。 – datenwolf 2012-03-20 00:02:48