Bonjour,

J'ai un problème, j'utilise un cylindre avec une texture et une sphère pour fermer ce cylindre.
Je veux que ces deux objets aient la même couleur (enfin que la couleur de fond de la texture soit la même que la sphère) mais voilà le resultat

Nom : img1.png
Affichages : 454
Taille : 23,2 Ko

J'applique un material blanc pour ambient et diffuse pour le cylindre texturé pour que la couleur original soit conservée et dans le gris voulu pour la sphère.

Les normales sont calculés automatiquement par opengl, je ne vois pas pourquoi il y a cette démarcation entre les deux objets au centre.

Vous avez une idée ?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
int main(int argc,char **argv){
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutInitWindowPosition(200,200);
    glutInitWindowSize(1366,768);
    glutCreateWindow("");
 
    glClearColor(0.0,0.0,0.0,0.0);
    glShadeModel(GL_FLAT);
    glPointSize(1.0);
 
    // Light initialisation
    GLfloat light_diffuse[] = {1.0, 1.0, 1.0, 1.0};
    GLfloat light_position[] = {0.0, 0.0, 5.0, 0.0};
    glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse);
    glLightfv(GL_LIGHT0, GL_POSITION, light_position);
    glEnable(GL_LIGHTING);
    glEnable(GL_LIGHT0);
 
    glEnable(GL_DEPTH_TEST);
 
    ...
 
}
 
 
 
 
 
void test(){
    GLfloat gray[] = {normal, normal, normal, 1.0};
    GLfloat white[] = {1.0, 1.0, 1.0, 1.0};
 
    glMaterialfv(GL_FRONT, GL_AMBIENT, white);
    glMaterialfv(GL_FRONT, GL_DIFFUSE, white);
 
    GLUquadricObj *quadObj;
 
    // cylinder
    glEnable(GL_TEXTURE_2D);
    glBindTexture(GL_TEXTURE_2D, texObject[2]);
    glPushMatrix();
        glRotatef(180, 0, 1, 0);
        glRotatef(90, 1, 0, 0);
        quadObj = gluNewQuadric();
        gluQuadricTexture(quadObj, 1);
        gluQuadricNormals(quadObj, GLU_SMOOTH);
        gluCylinder(quadObj, radiusHead, radiusHead, heightHead, 24, 24);
        glEndList();
    glPopMatrix();
    glDisable(GL_TEXTURE_2D);
 
    glMaterialfv(GL_FRONT, GL_AMBIENT, gray);
    glMaterialfv(GL_FRONT, GL_DIFFUSE, gray);
 
    // sphere
    glPushMatrix();
        //glColor3f(normal, normal, normal);
        glutSolidSphere(radiusHead, 24, 24);
    glPopMatrix(); 
}