【问题标题】:GLSL shader that scroll texture滚动纹理的 GLSL 着色器
【发布时间】:2012-06-01 09:44:48
【问题描述】:

如何在平面上滚动纹理? 所以我有一个带有纹理的平面,我可以使用着色器从右向左滚动(无限)它上面的纹理吗?

【问题讨论】:

    标签: opengl opengl-es glsl


    【解决方案1】:
    1. 使用设置纹理环绕模式

      glTexParameteri(TextureID, L_TEXTURE_WRAP_S, GL_REPEAT)

    2. 将名为 Time 的浮动制服添加到您的纹理着色器中

    3. 在获取纹理样本时使用 texture2D(sampler, u + Time, v) 之类的东西。

    4. 使用代码中的某些计时器更新 Time 制服。

    这是一个 GLSL 着色器:

    /*VERTEX_PROGRAM*/
    
    in vec4 in_Vertex;
    in vec4 in_TexCoord;
    
    uniform mat4 ModelViewMatrix;
    uniform mat4 ProjectionMatrix;
    
    out vec2 TexCoord;
    
    void main()
    {
         gl_Position = ProjectionMatrix * ModelViewMatrix * in_Vertex;
    
         TexCoord = vec2( in_TexCoord );
    }
    
    /*FRAGMENT_PROGRAM*/
    
    in vec2 TexCoord;
    
    uniform sampler2D Texture0;
    
    /// Updated in external code
    uniform float Time;
    
    out vec4 out_FragColor;
    
    void main()
    {
       /// "u" coordinate is altered
       out_FragColor = texture( Texture0, vec2(TexCoord.x + Time, TexCoord.y) );
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-27
      • 2011-10-04
      • 2013-06-13
      • 2012-03-05
      • 1970-01-01
      • 1970-01-01
      • 2013-05-06
      相关资源
      最近更新 更多