begin process at 2012 05 27 16:09:06
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

OpenGL

 > EXEMPLE D'UN CUBE PLEIN QUI TOURNE EN OPENGL (UTILISE GLUT)

EXEMPLE D'UN CUBE PLEIN QUI TOURNE EN OPENGL (UTILISE GLUT)


 Information sur la source

Note :
Aucune note
Catégorie :OpenGL Niveau :Débutant Date de création :23/01/2003 Date de mise à jour :23/01/2003 09:20:31 Vu :7 599

Auteur : bouba

Ecrire un message privé
Site perso
Commentaire sur cette source (6)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
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

  • #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;
  • }
#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


 Sources du même auteur

Source avec Zip Source avec une capture EDITEUR DE FICHIERS C++ (LINUX, WINDOWS, MAC...)
CRÉER UNE FENÊTRE AVEC LA XLIB (TOUT OS À BASE D'UNIX (LINUX...
FONCTIONS KBHIT() ET GETCH() SOUS LINUX (DOIT MARCHER AVEC T...
Source avec Zip Source avec une capture EDITEUR DE TEXTE (COMME LE NOTEPAD!!!) [COMPILATEUR BCC55](M...
Source avec Zip Source avec une capture DE LA MISE EN PAGE DANS VOS LABELS QT! C'EST BEAU, ET C'EST ...

 Sources de la même categorie

Source avec Zip Source avec une capture AFFICHER DES COURBES DE BEZIER par shorzy
Source avec Zip Source avec une capture BASE/MOTEUR 3D EN QT/OPENGL (COMPLET ET FONCTIONNEL!) POUR U... par envi33
Source avec Zip Source avec une capture CLASSE AVEC OPENGL - OBJETS 3D ET ANIMATIONS par rasta63
Source avec Zip Source avec une capture LETTRES 3D AVEC OPENGL ET QT par opossum_farceur
Source avec Zip CUBE 3D GLUT32 VC++ ET DEVC++ par bobby03

Commentaires et avis

Commentaire de GoldenEye le 23/01/2003 18:57:00

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

Commentaire de bouba le 24/01/2003 07:47:49

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é!

Commentaire de bobby03 le 19/08/2003 04:52:41

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.

Commentaire de bobby03 le 21/08/2003 05:06:12

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

Commentaire de susane le 06/05/2008 11:24:04

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.

Commentaire de bobby03 le 10/05/2008 04:20:53

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

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,562 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales