Problèmes avec les faces d'une pyramide [OpenGL] - Programmation
Marsh Posté le 09-03-2001 à 16:46:05
Je viens de compiler le prog chez moi, et j'ai une très belle pyramide qui tourne !!!!
Qu'est-ce que tu vois exactement ??
De plus, fait attention à l'ordre des vertex pour que la transparence des facettes soit bonne (cad transparentes de dos ou non, etc...)
A++
Marsh Posté le 09-03-2001 à 17:20:03
Bon deja dans le glutInitDisplayMode il faut ajouter GLUT_DEPTH
et tu deplace init() après la création de la fenetre (car c'est la qu'opengl est instancié, pas d'appel glXXX avant!)
[edit]--Message édité par MC--[/edit]
Marsh Posté le 09-03-2001 à 20:29:57
Merci MC, ça a résout mon problème. Ca marche très bien maintenant.
Un grand merci à tous pour votre aide!!!
Marsh Posté le 09-03-2001 à 15:49:02
Aucune des faces de la pyramide ne s'affiche correctement, quel est le problème?
Voilà le code:
#include <windows.h>
#include <gl/glut.h>
///////////////////////////////////////////////////////////////////
double rtri;
double rbase;
///////////////////////////////////////////////////////////////////
void init (GLvoid)
{
glShadeModel (GL_SMOOTH);
glClearColor (0.0, 0.0, 0.0, 0.0);
glClearDepth (1.0);
glEnable (GL_DEPTH_TEST);
glDepthFunc (GL_LEQUAL);
glEnable (GL_COLOR_MATERIAL);
glHint (GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
}
///////////////////////////////////////////////////////////////////
void display (void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glTranslatef( 0.0, 0.0,-5.0);
glRotatef(rtri, 0.0, 1.0, 0.0);
rtri-=0.5;
glBegin(GL_TRIANGLES);
glColor3f ( 1.0, 0.0, 0.0); // Rouge
glVertex3f( 0.0, 1.0, 0.0); // Top Of Triangle (Front)
glVertex3f(-1.0,-1.0, 1.0); // Left Of Triangle (Front)
glVertex3f( 1.0,-1.0, 1.0); // Right Of Triangle (Front)
glColor3f ( 0.0, 1.0, 0.0); // Vert
glVertex3f( 0.0, 1.0, 0.0); // Top Of Triangle (Right)
glVertex3f( 1.0,-1.0, 1.0); // Left Of Triangle (Right)
glVertex3f( 1.0,-1.0,-1.0); // Right Of Triangle (Right)
glColor3f ( 0.0, 0.0, 1.0); // Bleu
glVertex3f( 0.0, 1.0, 0.0); // Top Of Triangle (Back)
glVertex3f( 1.0,-1.0,-1.0); // Left Of Triangle (Back)
glVertex3f(-1.0,-1.0,-1.0); // Right Of Triangle (Back)
glColor3f ( 0.5, 0.5, 0.5); // Gris
glVertex3f( 0.0, 1.0, 0.0); // Top Of Triangle (Left)
glVertex3f(-1.0,-1.0,-1.0); // Left Of Triangle (Left)
glVertex3f(-1.0,-1.0, 1.0); // Right Of Triangle (Left)
glEnd();
glLoadIdentity();
glTranslatef( 0.0, 0.0,-5.0);
glRotatef(rbase, 0.0, 1.0, 0.0);
rbase-=0.5;
glBegin(GL_QUADS);
glColor3d ( 0.2, 0.3, 0.5);
glVertex3f(-1.0,-1.0, 1.0);
glVertex3f(-1.0,-1.0,-1.0);
glVertex3f( 1.0,-1.0,-1.0);
glVertex3f( 1.0,-1.0, 1.0);
glEnd();
glutSwapBuffers ();
}
///////////////////////////////////////////////////////////////////
void reshape (int w, int h)
{
glViewport (0, 0, w, h);
glMatrixMode (GL_PROJECTION);
glLoadIdentity ();
if (h==0)
gluPerspective (80,(float) w, 1.0, 5000.0);
else
gluPerspective (80,(float)w/(float) h, 1.0, 5000.0);
glMatrixMode (GL_MODELVIEW);
glLoadIdentity ();
}
///////////////////////////////////////////////////////////////////
void main (int argc, char** argv)
{
glutInit (&argc, argv);
init ();
glutInitDisplayMode (GLUT_RGB | GLUT_DOUBLE);
glutInitWindowSize (640, 480);
glutCreateWindow ("Newbie's Project" );
//glutFullScreen ();
glutDisplayFunc (display);
glutIdleFunc (display);
glutReshapeFunc (reshape);
glutMainLoop ();
}
///////////////////////////////////////////////////////////////////