7

平面上でテクスチャをスクロールするには? テクスチャのある平面があるのですが、シェーダを使用してテクスチャを左から右 (無限) にスクロールできますか?

4

1 に答える 1

12
  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) );
}
于 2012-06-01T10:23:39.503 に答える