我需要从纹理中删除所有奇数行 - 这是简单的去隔行扫描的一部分。
在下面的代码示例中,我没有从纹理中获取RGB,而是选择输出奇数行的白色和偶数行的红色 - 所以我可以直观地检查结果是否符合我的预期。
_texcoord从顶点着色器传入,x和y的范围为[0,1]
uniform sampler2D sampler0; /* not used here because we directly output White or Red color */
varying highp vec2 _texcoord;
void main() {
highp float height = 480.0; /* assume texture has height of 480 */
highp float y = height * _texcoord.y;
if (mod(y, 2.0) >= 1.0) {
gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);
} else {
gl_FragColor = vec4(0.0, 0.0, 1.0, 1.0);
}
}
渲染到屏幕时,不期望输出。垂直它是RRWWWRRWWW但我真的期待RWRWRWRW(即红色和白色之间的交替)
我的代码在iOS上运行并定位到GLES 2.0,因此在使用GLES 2.0的Android上应该没有什么不同
问题:我哪里做错了?
修改
答案 0 :(得分:4)
void main(void)
{
vec2 p= vec2(floor(gl_FragCoord.x), floor(gl_FragCoord.y));
if (mod(p.y, 2.0)==0.0)
gl_FragColor = vec4(texture2D(tex,uv).xyz ,1.0);
else
gl_FragColor = vec4(0.0,0.0,0.0 ,1.0);
}