Source     Discussion     Modifier     Historique     Forums     Salon IRC

Source:Animer des objets 3D avec OpenGL

Un article de Games Creators Network.

/************************************************/
/*	Source : http://www.games-creators.org/	*/
/************************************************/
 
#include <windows.h>
#include <gl/gl.h>
#include <gl/glut.h>
#include <math.h>
 
#define WIDTH 640
#define HEIGHT 480
 
void Display();
void Reshape(int,int);
void Idle();
void Init();
void Creer_Cube();
 
int id_cube=0;
int angle=0;
 
////////////////////////////////////////////////////////////////////////////
int main( int argc, char *argv[ ])
{
	glutInit(&argc,argv);
	glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH); // mode double buffering + z-buffer
 
        glutInitWindowSize(WIDTH,HEIGHT);
	glutInitWindowPosition(0,0);
	glutCreateWindow("Scène 3D Animée");
 
	Init();
 
	glutDisplayFunc(Display);
	glutReshapeFunc(Reshape);
	glutIdleFunc(Idle);
 
	glutMainLoop();
	return 0;
}
 
void Init()
{
	glEnable(GL_DEPTH_TEST);
	Creer_Cube();
}
 
void Creer_Cube()
{
	id_cube=glGenLists(1);
	glNewList (id_cube,GL_COMPILE); 
	glBegin(GL_QUADS); 
	glColor3d(1,0,0);
	glVertex3i(1,1,1);
	glVertex3i(1,-1,1);
	glVertex3i(-1,-1,1);
	glVertex3i(-1,1,1);
 
	glColor3d(0,1,0);
	glVertex3i(1,1,-1);
	glVertex3i(1,-1,-1);
	glVertex3i(-1,-1,-1);
	glVertex3i(-1,1,-1);
 
	glColor3d(0,0,1);
	glVertex3i(1,1,1);
	glVertex3i(1,-1,1);
	glVertex3i(1,-1,-1);
	glVertex3i(1,1,-1);
 
	glColor3d(0,1,1);
	glVertex3i(-1,1,1);
	glVertex3i(-1,-1,1);
	glVertex3i(-1,-1,-1);
	glVertex3i(-1,1,-1);
 
	glColor3d(1,1,0);
	glVertex3i(-1,1,-1);
	glVertex3i(-1,1,1);
	glVertex3i(1,1,1);
	glVertex3i(1,1,-1);
 
	glColor3d(1,0,1);
	glVertex3i(-1,-1,-1);
	glVertex3i(-1,-1,1);
	glVertex3i(1,-1,1);
	glVertex3i(1,-1,-1);
 
	glEnd(); 
	glEndList(); 
}
 
void Idle()
{
	angle+=5;
	if (angle>360) angle=0;
	glutPostRedisplay();
}
 
void Display()
{
	glClearColor(0,0,0,0); // selectionne la couleur noire (qui est celle par défaut)
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
	glLoadIdentity();
	gluLookAt(10,15,15,0,0,0,0,1,0);
 
	glCallList(id_cube);
 
	glPushMatrix();
	glRotated(angle,0,1,0);
	glTranslatef(0,0,-5);
	glScaled(0.5,0.5,0.5);
	glCallList(id_cube);
	glPopMatrix();
 
	glPushMatrix();
	glRotated(angle,0,1,0);
	glTranslatef(0,0,5);
	glRotated(angle,0,1,0);
	glScaled(0.5,0.5,0.5);
	glCallList(id_cube);
	glPopMatrix();
 
	glutSwapBuffers();
	glFlush();
}
 
void Reshape(int w, int h) 
{
	glViewport(0,0,w,h);
	glMatrixMode(GL_PROJECTION); // Choisit la matrice de projection
	glLoadIdentity();
	gluPerspective(45.0,(float) w/h,1.,100.);
	glMatrixMode(GL_MODELVIEW); // on revient sur la matrice MODELVIEW
	glLoadIdentity();	
}

 

Rechercher
Installer l'extension de recherche Plus d'informations

 

Comprendre
Tu me dis, j'oublie. Tu m'enseignes, je me souviens. Tu m'impliques, j'apprends. - Benjamin Franklin

 

Partager
La connaissance est la seule chose qui s'accroit lorsqu'on la partage. - Sacha Boudjema

 

Créer
L'imagination est plus importante que la connaissance. - Albert Einstein

 

 

Le wiki en images Le wiki en images Image du mois: «Snowball: un prototype de jeu développé avec NeL.