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 29 30 31 32 33 34 35 36
| GLvoid TrouRempart (GLint TextureId)
{
GLUtesselator *tess;
tess = gluNewTess();
gluTessCallback(tess, GLU_BEGIN, glBegin);
gluTessCallback(tess, GLU_END, glEnd);
gluTessCallback(tess, GLU_VERTEX, glVertex3dv);
int i;
float mycos, mysin;
static GLdouble demi_cercle[51][3];
for (i=0; i<51 ; i++)
{
demi_cercle[i][0] = 1 + cos(i*2* M_PI /100);
demi_cercle[i][1] = sin(i*2* M_PI /100);
demi_cercle[i][2]= 0;
}
static GLdouble carre_avant[][3] = {{0, 0, 0}, {2, 0, 0}, {2, 2, 0}, {0, 2, 0}};
static GLdouble carre_haut[][3] = {{0, 2, 0}, {2, 2, 0}, {2, 2, -2}, {0, 2, -2} };
static GLdouble carre_texture[][2] = {{0, 1}, {0, 0}, {1, 0}, {1, 1} };
glBindTexture(GL_TEXTURE_2D, TextureId);
gluTessBeginPolygon(tess,(GLvoid *)0);
gluTessBeginContour(tess);
for (i = 0; i < 4 ; i++)
gluTessVertex(tess,carre_avant[i],carre_avant[i]); glTexCoord2f(carre_texture[i][0], carre_texture[i][1]);
gluTessEndContour(tess);
gluTessBeginContour(tess);
for (i = 0; i < 51 ; i++)
gluTessVertex(tess,demi_cercle[i],demi_cercle[i] );
gluTessEndContour(tess);
gluTessEndPolygon(tess); |
Partager