我正在嘗試編寫簡單着色器以在基本紋理(128 * 128)上放置一些「標記」(64 * 64),以指示標記必須位於何處在底紋上使用青色標記大小(64 * 64)的區域。
成爲
GLSL - 將貼花紋理貼入基本紋理,並帶有顏色指示
片段着色器
precision lowp float;
uniform sampler2D us_base_tex;
uniform sampler2D us_mark_tex;
varying vec2 vv_base_tex;
varying vec2 vv_mark_tex;
const vec4 c_mark_col = vec4(0.0, 1.0, 1.0, 1.0);//CYAN
void main()
{
vec4 base_col = texture2D(us_base_tex, vv_base_tex);
if(base_col == c_mark_col)
{
vec4 mark_col = texture2D(us_mark_tex, vv_mark_tex);//texelFetch magic overhere must be
base_col = mix(base_col, mark_col, mark_col.a);
}
gl_FragColor = base_col;
}
當然,這不是工作,因爲它應該,我有這樣的事情(transperity僅用於演示,沒有青色區域,只有一塊「T」):
我試圖找出它,只有像texelFetch這樣的東西會幫助我,但我無法弄清楚,如何獲取基本紋理青色texel的tex座標,並將其轉換爲get - 第一行/第一行青色基本texel =第一列/第一行標記紋理,第二列/第一行基底=第二列/第一行標記。等等。
如果您有「標記」的圖像座標,爲什麼不能簡單地調整「T」紋理的紋理座標(和尋址模式),以便它坐在正確的位置?你使用的幾何圖形只是一個四邊形,對吧? – Ani 2012-08-10 14:56:46
是的,只是四個,你的意思是改變vv_mark_tex座標?那麼尋址模式呢? 「T」是不同的紋理,我必須把它放在青色區域,我不知道青色區域的紋理位置,只有它與標記的大小相同。 – Aristarhys 2012-08-10 15:16:31
讓我簡化我的問題 - 你知道青色矩形的像素/圖像座標嗎? – Ani 2012-08-10 15:56:58