Eu desenharia um único quad texturizado no chão (ou seja, deitado no plano XZ), do tamanho da área visível, e depois brincava com as coordenadas de textura dos vértices (com o modo de endereçamento de textura definido para quebrar ) para cuide automaticamente da repetição e rolagem da textura .
- Para repetição, em vez de definir sua coordenada vertical da textura de [0 a 1], defina-a de [0 a N] onde N é o número de vezes que você deseja que a textura seja repetida. Ajuste esse valor dependendo da altura do seu quad em comparação com a altura da sua textura.
- Para rolagem , basta rolar a coordenada vertical da textura, para que, em vez de variar de [0 a N], ela varie de [inc a N + inc], com o valor de inc sendo incrementado ou diminuindo cada quadro. De tempos em tempos, envolvia inc de volta à origem, a fim de impedir o estouro / o estouro.
EDIT Eu apenas tentei implementar isso exatamente como eu descrevi (mas no XNA) e funcionou muito bem. Veja este vídeo da demonstração. Código fonte aqui para os interessados.
Por exemplo, com N igual a 3, você obteria algo como a imagem abaixo (eu pintei a seção do meio em vermelho para que você possa ver onde a repetição ocorre). Então, simplesmente alterar o valor de inc faria a estrada rolar em uma direção ou outra, dependendo se você a incrementou ou diminuiu.