對不起,我會重寫希望清楚的問題。GLSL Fragment Position
在我的.cpp代碼中,我創建了一個四方形列表,其中一些有一個標誌,在像素着色器中,我檢查該標誌是否設置,如果沒有設置標誌,紅色,例如,如果設置了標誌,我想決定每一個像素的顏色,所以如果我需要爲紅色標記的四分之一的顏色着色,而另一半藍色,我可以簡單地做這樣的事情:
if coordinate in quad < something color = red
else colour = blue;
通過這種方式,我可以得到四分之一色的藍色和另一半紅色的顏色,或者我可以決定在哪裏放置紅色或放置藍色的位置。
想象我有四50x50像素
[FRAG]
if(quad.flag == 1)
{
if(Pixel_coordinate.x<25) gl_fragColor = vec4(1.0, 0.0, 0.0, 1.0);
else gl_fragColor = vec4(0.0, 1.0, 0.0, 1.0);
}
else
gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);
在這種情況下,我會期望與標誌設置四會得到每個面兩種顏色。 我希望我現在已經更具體。
感謝。
只是添加一些東西,我不能使用任何紋理。
好吧,我現在這樣做:
每四有4個紋理協調(0,0),(0,1),(1,1),(1,0);
啓用紋理座標使用:
glTexCoordPointer(2, GL_SHORT, sizeof(Vertex), BUFFER_OFFSET(sizeof(float) * 7));
[VERT]
varying vec2 texCoord;
main()
{
texCoord = gl_MultiTexCoord0.xy;
}
[FRAG]
varying vec2 texCoord;
main()
{
float x1 = texCoord.s;
float x2 = texCoord.t;
gl_FragColor = vec4(x1, x2, 0.0, 1.0);
}
我總是得到黃色所以X1 = 1米x 2幾乎總是= 1,一些四邊形是黃色/綠色。
我期望紋理座標在片段着色器中發生變化,所以我應該得到一個漸變,我錯了嗎?
要*「理解」*哪個位置(以及幾何的哪個*「半」*)?屏幕空間位置?世界空間的位置?觀看空間的位置?哪一個? –
當地的位置是什麼,你是指四邊形在世界空間中的位置還是什麼?什麼意思*「將像素着色一半」*?這個標誌的使用是否對實際問題有任何意義(也就是說,你想根據*「瞭解位置」來動態計算這個標誌*)?我非常難以理解你真正想要達到的目標。 –