我正在尝试修改片段着色器,它是标准 iPhone/XCode 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 是个十足的菜鸟 - 我正在尝试自学最基本的知识(从本教程 http://www.mobileorchard.com/getting-started-with-opengl-es-20-on-the-iphone-3gs/) .
您也可以发布您的顶点着色器吗?假设它正在通过vec4 colorVarying
当压缩成一行而不是示例中的两行代码(下面发布)时,它没有理由不工作
float odd = floor(mod(gl_FragCoord.y, 2.0));
gl_FragColor = vec4(colorVarying.x, colorVarying.y, colorVarying.z, odd);
我看到的唯一的其他区别是你指定了lowp
- 尝试一下没有那个。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)