8.9.4 Répétition de textures

En fait c'est très simple de faire se répéter une texture, il suffit de passer des valeurs plus grandes que 1 dans les fonctions glTexCoord2*.

Avec ces valeurs la texture se répétera 10 fois en longueur et en largeur du carré affiché :

1
2
3
4
5
6
7
glBindTexture(GL_TEXTURE_2D, idDeTexture);
glBegin(GL_QUADS);		
	glTexCoord2d(10,10);  glVertex3d(10.0, 10.0, 0.0);
	glTexCoord2d(10,0);  glVertex3d(10.0, -10.0, 0.0);
	glTexCoord2d(0,0);  glVertex3d(-10.0, -10.0, 0.0);
	glTexCoord2d(0,10);  glVertex3d(-10.0, 10.0, 0.0);
glEnd();

Voici a quoi ressemble la fonction draw dans ce cas :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
void AppTest::draw(){
	glEnable(GL_TEXTURE_2D);
	
	glBindTexture(GL_TEXTURE_2D, p_textureSol);
	glBegin(GL_QUADS);
		glColor3ub(255, 255, 255);
		glTexCoord2d(10,10); glVertex3d(10.0, 10.0, 0.0);
		glTexCoord2d(10,0); glVertex3d(10.0, -10.0, 0.0);
		glTexCoord2d(0,0); glVertex3d(-10.0, -10.0, 0.0);
		glTexCoord2d(0,10);glVertex3d(-10.0, 10.0, 0.0);
	glEnd();
	
	glTranslated(0.0, 0.0, 2.0);
	
	glBindTexture(GL_TEXTURE_2D, p_textureTerre);
	gluQuadricDrawStyle(p_params, GLU_FILL);
	gluQuadricTexture(p_params, GL_TRUE);
	
	glColor3ub(255, 255, 255);
	gluSphere(p_params, 1.0, 20, 20);
	
	glDisable(GL_TEXTURE_2D);
	
	
	glTranslated(5.0, 5.0, 5.0);
	glColor3ub(0, 0, 255);
	gluSphere(p_params, 1.0, 20, 20);
}

Et voilà le résultat :

plop

Regardons ce que ça donne sous un autre angle :

plop

C'est la classe.

Mais le problème c'est que tout ceci est très lent. Mais on va y remédier.