我需要从纹理中删除所有奇怪的线条 - 这是一个简单的去隔行器的一部分。
在下面的代码示例中,我没有从纹理中获取 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 上应该没有什么不同
问:我哪里做错了?
编辑
- 是的,纹理高度是正确的
- 我想我的问题是:给定一个 _texcoord.y,如何判断它是指纹理的奇数线还是偶数线。