Opengl 滚动纹理的GLSL着色器

Opengl 滚动纹理的GLSL着色器,opengl,opengl-es,glsl,Opengl,Opengl Es,Glsl,如何在平面上滚动纹理? 所以我有一个带有纹理的平面,我可以使用着色器从右向左(无限)滚动纹理吗 使用设置纹理环绕模式 glTexParameteri(TextureID、L\u TEXTURE\u WRAP\S、GL\u REPEAT) 将名为Time的浮动均匀体添加到纹理着色器中 在获取纹理样本时,使用类似于texture2D(采样器,u+时间,v)的方法 使用代码中的计时器更新时间制服 下面是一个GLSL着色器: /*VERTEX_PROGRAM*/ in vec4 in_Vertex;

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

  • 使用设置纹理环绕模式

    glTexParameteri(TextureID、L\u TEXTURE\u WRAP\S、GL\u REPEAT)

  • 将名为
    Time
    的浮动均匀体添加到纹理着色器中

  • 在获取纹理样本时,使用类似于
    texture2D(采样器,u+时间,v)
    的方法

  • 使用代码中的计时器更新
    时间
    制服

  • 下面是一个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) );
    }