begin process at 2012 05 28 14:44:28
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

OpenGL

 > 

Brique qui clignote


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Brique qui clignote

vendredi 17 février 2006 à 14:51:49 | Brique qui clignote

nisaloncaje

Salut, j'ai encore un problème et comme d'habitude je trouve pas la solution : mon problème c'est que j'ai une brique qui clignote anormalement : de temps en temps elle semble s'éteindre !!!

Voici la source :
#include <stdio.h>
#include <stdlib.h>
#include <GL/glut.h>
#include <math.h>
#define PI 3.14159265


int theta=50;
void changePerspective();
void display();
void brique(void);
void calcTableCosSin();
void rotation();
float ang=0;
float inca=4;
int rotation_act=1;


float Sin[360],Cos[360];


/* Paramètres de lumière */
GLfloat L0pos[]={-4.0,4.0,3.0};
GLfloat L0dif[]={ 1.0,1.0,1.0};
GLfloat L1pos[]={ 1.7,4.5,2.0};
GLfloat L1dif[]={ 1.0,1.0,1.0};
GLfloat Mspec[]={ 0.7,0.7,0.7};
GLfloat Mshiny=5;
/* Fin paramètres de lumière */





int main(int argc,char **argv) {




// Initialisation d'OpenGL
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_RGB|GLUT_DOUBLE|GLUT_DEPT
H);
glutInitWindowPosition(200,200);
glutInitWindowSize(640,480);
glutCreateWindow("essd");

calcTableCosSin();
glClearColor(0.0,0.0,0.0,0.0);
glPointSize(1.0);
glShadeModel(GL_SMOOTH);
glEnable(GL_DEPTH_TEST);

/* Paramétrage des lumières */
glShadeModel(GL_SMOOTH);
glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER,GL_TRUE)
;
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glEnable(GL_LIGHT1);
glLightfv(GL_LIGHT0,GL_DIFFUSE,L0dif);
glLightfv(GL_LIGHT0,GL_SPECULAR,L0dif);
glLightfv(GL_LIGHT1,GL_DIFFUSE,L1dif);
glLightfv(GL_LIGHT1,GL_SPECULAR,L1dif);

/* Paramétrage du matériau */
glMaterialfv(GL_FRONT_AND_BACK,GL_SPECULAR,Mspec);

glMaterialf(GL_FRONT_AND_BACK,GL_SHININESS,Mshiny)
;

changePerspective();
glMatrixMode(GL_MODELVIEW);


// Fonctions de rappel
glutDisplayFunc(display);


// Entrée dans la boucle principale
glutMainLoop();
return 0;
}





void changePerspective()
{
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(theta,1.0,0.1,40.0);
glMatrixMode(GL_MODELVIEW);
}



void display()
{
/* effacement de l'image avec la couleur de fond */
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();


/*Application des transfos de visualisation */

/*CAMERA*/
glTranslatef(-0.5,-0.75,-4.0);
glRotated(20.0,0.60,-1.0,-0.06);
/*CAMERA FIN */

/*LUMIERES*/
glLightfv(GL_LIGHT0,GL_POSITION,L0pos);
glLightfv(GL_LIGHT1,GL_POSITION,L1pos);
/*LUMIERES FIN*/



glPushMatrix();


if(rotation_act==1)
glutTimerFunc(30,rotation,0);
/* Dessin de la brique tournante */
glLoadIdentity();
glPopMatrix();
glPushMatrix();
glRotatef(ang,0.0,1.0,0.0);
brique();


glFlush();

/* On echange les buffers */
glutSwapBuffers();
}


void brique(void) {
// Fonction permettant de dessiner une brique
float tl2=25/100+.2;


glBegin(GL_POLYGON);
glColor3f(1.0,1.0,1.0); glVertex3f(-tl2, 0.2, tl2);
glColor3f(1.0,1.0,1.0); glVertex3f(-tl2, 0.0, tl2);
glColor3f(1.0,1.0,1.0); glVertex3f( tl2, 0.0, tl2);
glColor3f(1.0,1.0,1.0); glVertex3f( tl2, 0.2, tl2);
glEnd();


glBegin(GL_POLYGON);
glColor3f(1.0,1.0,1.0); glVertex3f( tl2,0.2, tl2);
glColor3f(1.0,1.0,1.0); glVertex3f( tl2,0.0, tl2);
glColor3f(1.0,1.0,1.0); glVertex3f( tl2,0.0,-tl2);
glColor3f(1.0,1.0,1.0); glVertex3f( tl2,0.2,-tl2);
glEnd();


glBegin(GL_POLYGON);
glColor3f(1.0,1.0,1.0); glVertex3f( tl2,0.2,-tl2);
glColor3f(1.0,1.0,1.0); glVertex3f( tl2,0.0,-tl2);
glColor3f(1.0,1.0,1.0); glVertex3f(-tl2,0.0,-tl2);
glColor3f(1.0,1.0,1.0); glVertex3f(-tl2,0.2 ,-tl2);
glEnd();


glBegin(GL_POLYGON);
glColor3f(1.0,1.0,1.0); glVertex3f(-tl2,0.2 ,-tl2);
glColor3f(1.0,1.0,1.0); glVertex3f(-tl2,0.0,-tl2);
glColor3f(1.0,1.0,1.0); glVertex3f(-tl2,0.0, tl2);
glColor3f(1.0,1.0,1.0); glVertex3f(-tl2,0.2 , tl2);
glEnd();


glBegin(GL_POLYGON);
glColor3f(1.0,1.0,1.0); glVertex3f(-tl2, 0.2 ,-tl2);
glColor3f(1.0,1.0,1.0); glVertex3f(-tl2, 0.2 , tl2);
glColor3f(1.0,1.0,1.0); glVertex3f( tl2, 0.2 , tl2);
glColor3f(1.0,1.0,1.0); glVertex3f( tl2, 0.2 ,-tl2);
glEnd();


glBegin(GL_POLYGON);
glColor3f(1.0,1.0,1.0); glVertex3f(-tl2,0,-tl2);
glColor3f(1.0,1.0,1.0); glVertex3f(-tl2,0, tl2);
glColor3f(1.0,1.0,1.0); glVertex3f( tl2,0, tl2);
glColor3f(1.0,1.0,1.0); glVertex3f( tl2,0,-tl2);
glEnd();




}





void calcTableCosSin()
{
/* calcul du tableau des sinus et cosinus */
int i;
for (i=0;i<360;i++) {
Cos[i]=cos(((float)i)/180.0*PI);
Sin[i]=sin(((float)i)/180.0*PI);
}
}

void rotation()
{
ang=ang+inca;
if (ang>360)
ang=ang-360;
glutPostRedisplay();
}


Voila, merci de me dire où ca ne va pas et aussi dites moi si mon utilisation de gluttimerfunc est correcte
vendredi 17 février 2006 à 23:37:07 | Re : Brique qui clignote

KeniiyK

Membre Club

Salut, je ne sais pas si ca va resoudre ton problème mais :
glPushMatrix();
if(rotation_act==1)
glutTimerFunc(30,rotation,0);
/* Dessin de la brique tournante */
glLoadIdentity();
glPopMatrix();

glPushMatrix();
glRotatef(ang,0.0,1.0,0.0);
brique();
glPopMatrix();
Ce qui est en rouge est a virer, ce qui est en vert a rajouter

Pour glutTimerFunc, il faut passer au second parametre l'adresse d'une fonction :
void func(int)

KeniiyK

samedi 18 février 2006 à 11:42:48 | Re : Brique qui clignote

nisaloncaje

non, malheuresement ca ne résout rien. Une autre idée ?
samedi 18 février 2006 à 12:04:50 | Re : Brique qui clignote

nisaloncaje

J'ai peut etre trouvé : dans mon code source, j'ai oublié de dire les normales. Cependant, quand je fais ca il semble y avoir des prblèmes d'ombrage : chaque face est "unie" lorsque qu'une face est à moitié dans l'ombre, alors elle est totalement noire !


Cette discussion est classée dans : void, glvertex3f, glcolor3f, gl, tl2


Répondre à ce message

Sujets en rapport avec ce message

Problème avec les polygones [ par nisaloncaje ] Bonjour, j'ai le code source suivant : #include #include double a=0,inca=0.1; /* Prototype des fonctions */void affichage();void clavier(unsigned QT sous Visual C++ 2008 : SOUS XP [ par controlleur ] Bonjour j'ai rencontré une erreur l'or de l'exécution de mon programme : l'erreur c'est qu'il me dise que les QComboBox et QSlider que j'ai déclar PB POUR LA GESTION MULTIFENETRES [ par algeros ] Voici un code ://////////////////////////////////////////////////////////////////                                                          //   Name: J'ai besoins d'aide please ! [ par mondrone ] #include #include SDL_Surface *screen = NULL; void demarre_opengl(); void creer_fenetre_opengl(); void init_opengl(); void stop_opengl(); void tou Gestoin de souris en C++ [ par Wickedwolf ] Bonjour,je débute en C++ en suivant un cours d'infographie proposée dans mon cursus universitaire. Le projet de cette année consite en la création d'u pikcing opengl [ par znb ] J 'ai fait un code et ça marche très bien; il détecte les couleurs des objets. Mais je veux que, pour une valeur particulière de la couleur, dessiner probleme de selection dans opengl [ par oswa ] bonjour, svp j'ai besoin d'un aide urgent. en effet, j'ai realiser un programme en c++ qui utilise opengl. ce programme permet de dessiner plusieurs Offscreen texture rendering to bitmap [ par S3rialHoOK3rs ] Bonjour, J'essaie de créer un rendu hors écran au sein de mon application OpenGL. Pour ce faire, je stock mon rendu offscreen dans une texture que je


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,094 sec (4)

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