2012-06-01 17 views
5

Cómo desplazar una textura en un plano? Así que tengo un avión con una textura, ¿puedo usar un sombreador para desplazarme de la textura a la izquierda desde la derecha (infinito)?sombreador GLSL que desplaza la textura

Respuesta

10
  1. de configuración del modo de textura envoltorio utilizando

    glTexParameteri(TextureID, L_TEXTURE_WRAP_S, GL_REPEAT)

  2. Añadir el uniforme flotador llamado Time a su shader texturizado

  3. usar algo como texture2D(sampler, u + Time, v) al recuperar la muestra de textura.

  4. Actualiza el uniforme Time usando un temporizador en tu código.

Aquí hay un sombreado 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)); 
} 
Cuestiones relacionadas