2010-06-03 60 views
2

我想修改片段着色器,它是标准的iPhone/XCode OpenGL ES模板的一部分。我想让它的每一行像素都是透明的。我到目前为止这样的代码:如何修改iPhone OpenGL ES模板中的着色器以产生此效果?

varying lowp vec4 colorVarying; 

void main() 
{ 
    gl_FragColor = vec4(colorVarying.x, colorVarying.y, colorVarying.z, floor(mod(gl_FragCoord.y, 2.0))); 

} 

但是,当我编译和运行我仍然得到同样的方上下移动,没有其他影响。

这里是我的顶点着色器(我的键盘刚刚分手所以没有返回键!DOH!)

attribute vec4 position; 
attribute vec4 color; 

varying vec4 colorVarying; 

uniform float translate; 

void main() 
{ 
    gl_Position = position; 
    gl_Position.y += sin(translate)/2.0; 

    colorVarying = color; 
} 

使用这个顶点着色器及以上片段着色器,我没有得到任何“扫描线效应”这是我所期待的。我正在使用iPad模拟器以及3.1.3 iPhone模拟器进行测试。

我在这里做错了什么?我在Glsl是一个完整的n00b - 我试图教自己非常基础(从this tutorial开始)。

回答

0

你可以发布你的顶点着色器吗?假设它是在经过vec4 colorVarying没有理由当压扁成相对于两行代码样本中(贴在下面)一行

float odd = floor(mod(gl_FragCoord.y, 2.0)); 
gl_FragColor = vec4(colorVarying.x, colorVarying.y, colorVarying.z, odd); 

其他唯一的区别我看到的是它不应该工作你指定lowp - 尝试没有。