【问题标题】:How can I modify the shader in the iPhone OpenGL ES template to produce this effect?如何修改 iPhone OpenGL ES 模板中的着色器以产生这种效果?
【发布时间】:2014-01-26 22:40:16
【问题描述】:

我正在尝试修改作为标准 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 的一个完整的 n00b - 我正在尝试自学最基本的知识(从 this tutorial 开始)。

【问题讨论】:

    标签: iphone opengl-es


    【解决方案1】:

    您也可以发布您的顶点着色器吗?假设它正在通过 vec4 colorVarying ,那么与示例中的两行代码相比,它没有理由在压缩成一行时不起作用(发布在下面)

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

    我看到的唯一其他区别是您指定了 lowp - 不用那个就试试吧。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-31
      • 2019-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多