Exemple d'un cube plein qui tourne en opengl (utilise glut)

0/5 (6 avis)

Snippet vu 16 493 fois - Téléchargée 39 fois

Contenu du snippet

C'est un exemple simple de cube qui tourne sur lui même. J'ai programmé le code avec Borland C++ 5.5, le code utilise la librairie GLUT.

Source / Exemple :


#include <windows.h>
#include <GL/glu.h>
#include <GL/glut.h>
#include <GL/gl.h>

void display()
{
	glClearColor(0.0,0.0,0.0,0.0);
	glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
	
//La c'est les coordonnées du cube         
                static GLfloat coord[]= 
	{
		-0.5,-0.5,-0.5,
		0.5,-0.5,-0.5,
		0.5,0.5,-0.5,
		-0.5,0.5,-0.5,
		-0.5,-0.5,0.5,
		0.5,-0.5,0.5,
		0.5,0.5,0.5,
		-0.5,0.5,0.5
	};

//Ici les couleurs du cube
	static GLfloat color[6][3]=
	{
		{1.0,0.0,0.0},
		{0.0,1.0,0.0},
		{0.0,0.0,1.0},
		{0.0,1.0,1.0},
		{1.0,1.0,0.0},
		{1.0,0.0,1.0},
	};

//Ici c'est les faces du cube qui sont rangées, chaque sommet possède un numéro 
	static GLubyte num[6][4]=
	{{0,1,2,3},
	{1,5,6,2},
	{4,5,6,7},
	{0,4,7,3},
	{0,1,5,4},
	{2,6,7,3}
	};

	glEnableClientState(GL_VERTEX_ARRAY);
	glVertexPointer(3,GL_FLOAT,0,coord);
 	glRotatef(0.4, 0.0, 1.0, 1.0);              //Rotation du cube
	
                //Dessin du cube
                for(int x=0; x!=6; x++)
	{
	glBegin(GL_QUADS);
	glColor3f(color[x][0],color[x][1],color[x][2]);        //définition de la couleur d'une face
	for(int i=0; i!=4; ++i)
		glArrayElement(num[x][i]);
	glEnd();
	}
	glutSwapBuffers();          
	glutPostRedisplay();
}

void keyboard(unsigned char touche, int x, int y)
{
	switch(touche)
	{
	case 27 :                  //Echap pour quitter
		exit(0);
	}
}

void glInit (void)
{
    glEnable (GL_DEPTH_TEST);             //Active la profondeur
    glPolygonMode (GL_FRONT_AND_BACK, GL_FILL);
}

int main(int argc, char **argv)
{
                glutInitDisplayMode (GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
	glutInit(&argc,argv);
	glutInitWindowSize(500,500);
	glutInitWindowPosition(100,100);
	glutCreateWindow("Fenetre");
	glutDisplayFunc(display);
	glutKeyboardFunc(keyboard);
	glInit();
	glutMainLoop();
	return 0;
}

Conclusion :


Rien a dire, les commentaires sont assez clairs je pense.
Si vous avez des questions, pas de problèmes.
Bouba

A voir également

Ajouter un commentaire Commentaires
cs_GoldenEye Messages postés 527 Date d'inscription vendredi 14 septembre 2001 Statut Membre Dernière intervention 6 octobre 2008 4
23 janv. 2003 à 18:57
Je suis pas spécialiste en OpenGL mais je vais bientôt m'y mettre...
Juste un truc pour rendre compilable par gcc: evite les déclarations de variables au sein d'un for
cs_bouba Messages postés 518 Date d'inscription dimanche 2 décembre 2001 Statut Membre Dernière intervention 10 novembre 2007 3
24 janv. 2003 à 07:47
Hum, la déclaration de variable dans les boucles for n'est permise qu'en c++, a l'origine gcc est pour faire du c, c'est pourquoi on peut pas déclarer de variables dans les boucles. Mais je pense qu'il est conseillé de le faire pour améliorer la lisibilité!
cs_bobby03 Messages postés 71 Date d'inscription lundi 30 décembre 2002 Statut Membre Dernière intervention 24 juin 2019
19 août 2003 à 04:52
Je viens de recompiler avec Borland C++ 5.02 et tout va bien. tu as fait ton programme en Console, je vais essayer de la faire en win32.
cs_bobby03 Messages postés 71 Date d'inscription lundi 30 décembre 2002 Statut Membre Dernière intervention 24 juin 2019
21 août 2003 à 05:06
J'ai fini de faire la version Window. Je l'ai appelé Figure Géométrique par ce que ça na pas tout à fait donné un cube
cs_susane Messages postés 3 Date d'inscription lundi 5 mai 2008 Statut Membre Dernière intervention 29 juillet 2010
6 mai 2008 à 11:24
bonjour ce programme m'a beaucoup plu et
je l'ai compilé pourvoir le résultat en borland c++ mais il n'a pas voulu s'exécuter correctement, il manque peut être des bibliothèques ou le code n'est pas complet. c'est quoi le problème à votre avis.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.