2012-06-01 13 views
5

Come scorrere una trama su un piano? Quindi ho un piano con una trama, posso usare uno shader per scorrere da sinistra a destra (infinito) la trama su di esso?shader GLSL che scorre trama

risposta

10
  1. selezionare la modalità di spostamento struttura utilizzando

    glTexParameteri(TextureID, L_TEXTURE_WRAP_S, GL_REPEAT)

  2. Aggiungere l'uniforme galleggiante chiamato Time al tuo shader di texturing

  3. Usa qualcosa come texture2D(sampler, u + Time, v) durante il recupero del campione texture.

  4. Aggiornare l'uniforme Time utilizzando un timer nel codice.

Ecco uno shader 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)); 
} 
Problemi correlati