2012-06-01 201 views
5

如何在平面上滾動紋理? 所以我有一個紋理的飛機,我可以使用着色器從右側(無限)向上滾動紋理嗎?滾動紋理的GLSL着色器

回答

10
  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)); 
}