J'essaye de faire pivoter le dodécaèdre avec une lumière simple.OpenGL light avec rotation d'objet
Le code de la fonction d'affichage est la suivante:
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glLightf(GL_LIGHT1, GL_CONSTANT_ATTENUATION, 1.5f);
glLightf(GL_LIGHT1, GL_LINEAR_ATTENUATION, 0.75f);
glLightf(GL_LIGHT1, GL_QUADRATIC_ATTENUATION, 0.4);
GLfloat black[] = { 0, 0, 0, 1 };
GLfloat blue[] = { 0, 1, 1, 1 };
glLightfv(GL_LIGHT1, GL_AMBIENT, black);
glLightfv(GL_LIGHT1, GL_DIFFUSE, blue);
glLightfv(GL_LIGHT1, GL_SPECULAR, blue);
glEnable(GL_LIGHT1);
glEnable(GL_LIGHTING);
glTranslatef(0, 0, -50);
glRotatef(angle, 0, 1.0, 0);
glutSolidDodecahedron();
Le changement angle
par les touches fléchées. Mais pour certains angles, l'image semble bizarre comme ceci:
et après plus de rotations, il ressemble à ceci:
Il semble que les visages qui était à l'arrière sont transparents. Pourquoi donc? Comment puis-je rendre cet objet à imprimer correctement?
Il semble toujours le même ... Pourquoi le verso de l'objet est noir à l'avant? Je n'ai pas besoin de voir les visages noirs du tout. Je regarde directement l'objet, et la lumière derrière moi ... – nrofis
Quelle est votre couleur claire? En outre, la sélection de la face arrière est-elle activée? Si cela est vrai, peut-être que les polygones de l'objet ont un ordre d'enroulement qui définit la face avant comme la face interne au lieu de la face externe. Essayez peut-être 'glDisable (GL_CULL_FACE);' aussi. –
Hmm, on dirait que j'ai oublié d'activer la suppression de la face arrière ... Après avoir ajouté 'glEnable (GL_CULL_FACE)' cela fonctionne bien. Je vous remercie! – nrofis