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

Soyez le premier à donner votre avis sur cette source.

Snippet vu 13 214 fois - Téléchargée 36 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

Messages postés
71
Date d'inscription
lundi 30 décembre 2002
Statut
Membre
Dernière intervention
24 juin 2019

Il faut les bibliothèques OpenGl, Je les ai fourni dans mes compilations Borland C++ 5.02. Va les cherchers tout est la avec les instructions.
Bob
Messages postés
3
Date d'inscription
lundi 5 mai 2008
Statut
Membre
Dernière intervention
29 juillet 2010

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.
Messages postés
71
Date d'inscription
lundi 30 décembre 2002
Statut
Membre
Dernière intervention
24 juin 2019

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
Messages postés
71
Date d'inscription
lundi 30 décembre 2002
Statut
Membre
Dernière intervention
24 juin 2019

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.
Messages postés
518
Date d'inscription
dimanche 2 décembre 2001
Statut
Membre
Dernière intervention
10 novembre 2007
3
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é!
Afficher les 6 commentaires

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.