2012-06-01 11 views
5

Wie scrollt man eine Textur auf einer Ebene? Also habe ich ein Flugzeug mit einer Textur, kann ich einen Shader verwenden, um von links nach rechts (unendlich) die Textur darauf zu scrollen?GLSL-Shader, die Scroll-Textur

Antwort

10
  1. -Setup der Textur Wickelmodus

    glTexParameteri(TextureID, L_TEXTURE_WRAP_S, GL_REPEAT)

  2. den Schwimmer einheitlichen hinzufügen namens Time zu Ihrer Texturierung Shader

  3. Verwendung so etwas wie texture2D(sampler, u + Time, v) Verwendung während Textur Probe zu holen.

  4. Aktualisieren Sie die Time Uniform mit einigen Timer in Ihrem Code.

Hier ist ein GLSL Shader:

/*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)); 
} 
Verwandte Themen