我的目標是在Opengl ES中創建sobel過濾器。我正在使用Netbeans IDE。在調試模式下一切正常,但在發佈模式下,我正在獲取網格線。代碼運行在樹莓派上。sobel過濾器中的不必要的網格線Opengl ES
任何人都可以幫我擺脫這些線?
這是片段着色器代碼。
varying vec2 tcoord;
uniform sampler2D tex;
uniform vec2 texelsize;
void main(void)
{
vec4 tm1m1 = texture2D(tex,tcoord+vec2(-1,-1)*texelsize);
vec4 tm10 = texture2D(tex,tcoord+vec2(-1,0)*texelsize);
vec4 tm1p1 = texture2D(tex,tcoord+vec2(-1,1)*texelsize);
vec4 tp1m1 = texture2D(tex,tcoord+vec2(1,-1)*texelsize);
vec4 tp10 = texture2D(tex,tcoord+vec2(1,0)*texelsize);
vec4 tp1p1 = texture2D(tex,tcoord+vec2(1,1)*texelsize);
vec4 t0m1 = texture2D(tex,tcoord+vec2(0,-1)*texelsize);
vec4 t0p1 = texture2D(tex,tcoord+vec2(0,-1)*texelsize);
vec4 xdiff = -1.0*tm1m1 + -2.0*tm10 + -1.0*tm1p1 + 1.0*tp1m1 + 2.0*tp10 + 1.0*tp1p1;
vec4 ydiff = -1.0*tm1m1 + -2.0*t0m1 + -1.0*tp1m1 + 1.0*tm1p1 + 2.0*t0p1 + 1.0*tp1p1;
vec4 tot = sqrt((xdiff*xdiff)+(ydiff*ydiff));
vec4 col = tot;
col.a = 1.0;
gl_FragColor = clamp(col,vec4(0),vec4(1));
}
這是調試圖像。
發佈圖像。
謝謝,但它並沒有解決這個問題:
你可以用這個指令在着色器的最開始設定的精度。 – 2014-10-20 04:52:57
只有在使用-Ox標誌進行編譯時纔會出現問題。 x = 1,2,3 – 2014-10-20 05:48:45
如何編譯CPU代碼不應該影響着色器中發生的情況。如果僅僅在着色器中進行採樣,沒有任何過濾計算,紋理是否正常? – 2014-10-20 05:56:59