Votre question

Problèmes avec Dev c++, OpenGL et Glut

Tags :
  • Opengl
  • Programmation
Dernière réponse : dans Programmation
7 Février 2006 20:23:24

Bonjour,

Alors voila en fait j'ai un gros projet à faire dans le cadre de mes études, et j'ai choisi (avec mon groupe de projet) de faire un moteur 3D. Nous avons trouvé des didact sur internet et nous avons essayé de tester les codes sources avec dev c++. Le problème c'est que ça ne compile pas!!! et comme je ne suis pas une pro de glut et openGl, je ne sais pas ce qui cloche dans le code... je vous donne le code :

/********************************************************/
/* ballade.c */
/********************************************************/
/* Petite ballade dans un monde (reduit) en fil de fer */
/********************************************************/
/* inclusion des fichiers d'entete Glut */
#include <stdio.h>
#include <stdlib.h>
#include <GL/glut.h>
#include <math.h>
void display();
void keyboard(unsigned char key,int x, int y);
void mousePress(int bouton,int state,int x,int y);
void MouseMotion(int x,int y);
void calcCosSinTable();
void testPosition();
void changePerspective();
float pz=0.0,px=0.0,Sin[360],Cos[360],theta=50;
int xold,r=0;
int main(int argc,char **argv)
{
/* initialisation de glut et creation
de la fenetre */
glutInit(
glutInitDisplayMode(GLUT_RGB|GLUT_DOUBLE);
glutInitWindowPosition(200,200);
glutInitWindowSize(500,500);
glutCreateWindow("29");
/* Initialisation d'OpenGL */
glClearColor(0.0,0.0,0.0,0.0);
changePerspective();
/* Precalcul des sinus et cosinus */
calcCosSinTable();
/* enregistrement des fonctions de rappel */
glutDisplayFunc(display);
glutKeyboardFunc(keyboard);
glutMouseFunc(mousePress);
glutMotionFunc(MouseMotion);
/* Entre dans la boucle principale glut */
glutMainLoop();
return 0;
}
void display()
{
/* effacement de l'image avec la couleur de fond */
glClear(GL_COLOR_BUFFER_BIT);
glLoadIdentity();
/*Application des transfos de visualisation */
glRotated(r,0.0,1.0,0.0);
glTranslatef(−px,0.0,−pz);
glPushMatrix();
/* Dessin des objets */
glTranslatef(0,1.5,0);
glScalef(1.0,0.25,1.0);
glColor3d(1,0,0);
glutWireCube(20);
glPopMatrix();
glPushMatrix();
glTranslated(5,−1,5);
glRotated(−90,1,0,0);
glColor3f(1.0,1.0,1.0);
glutWireCone(1,2,20,1);
glPopMatrix();
glPushMatrix();
glTranslated(−5,0,5);
glutWireTorus(0.2,0.8,20,30);
glPopMatrix();
glPushMatrix();
glTranslated(5,0,−5);
glutWireCube(2);
glPopMatrix();
glTranslated(−5,0,−5);
glutWireSphere(1,20,20);
/* on force l'affichage du resultat */
glFlush();
glutSwapBuffers();
}
void keyboard(unsigned char key,int x, int y)
{
switch (key)
{
case 'q':
exit(0);
case 'z':
pz−=0.5*Cos[r];
px+=0.5*Sin[r];
testPosition();
glutPostRedisplay();
break;
case 's':
pz+=0.5*Cos[r];
px−=0.5*Sin[r];
testPosition();
glutPostRedisplay();
break;
case 'b':
theta+=1;
if (theta>180)
theta=180;
changePerspective();
glutPostRedisplay();
break;
case 'n':
theta−=1;
if (theta<0)
theta=0;
changePerspective();
glutPostRedisplay();
break;
}
}
void mousePress(int bouton,int state,int x,int y)
{
if (bouton==GLUT_LEFT_BUTTONN){
xold=x;
}
}
void MouseMotion(int x,int y)
{
r+=x−xold;
if (r>=360)
r−=360;
if (r<0)
r=360+r;
xold=x;
glutPostRedisplay();
}
void calcCosSinTable()
{
int i;
for (i=0;i<360;i++){
Sin=sin(i/360.0*6.283185);
Cos=cos(i/360.0*6.283185);
}
}
void testPosition()
{
if (px>9.8)
px=9.8;
if (px<−9.8)
px=−9.8;
if (pz>9.8)
pz=9.8;
if (pz<−9.8)
pz=−9.8;
}
void changePerspective()
{
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(theta,1.0,0.1,40.0);
glMatrixMode(GL_MODELVIEW);
}


Voilà j'espère qu'un amatteur ou un pro passeront par là pour m'aider... vite...

Merci!!

Autres pages sur : problemes dev opengl glut

7 Février 2006 20:32:12

avec la retranscription des erreurs ce serait aussi bien...
7 Février 2006 22:17:56

Euh j'ai pensé à mettre les erreurs mais le problème c'est qu'il y en a énormément ... :-(
Elles sont toutes du genre :

[linker error] undefined reference to 'glutNomFonction'

Sinon j'avais oublié de mettre les arguments dans glutInit :
glutInit(&argc, argv);
et d'enlever un 'N' à '(bouton==GLUT_LEFT_BUTTONN)'

voilà
Contenus similaires
Pas de réponse à votre question ? Demandez !
7 Février 2006 22:36:57

Citation :

brotelle a écrit :
Euh j'ai pensé à mettre les erreurs mais le problème c'est qu'il y en a énormément ... :-(
Elles sont toutes du genre :

[linker error] undefined reference to 'glutNomFonction'

donc c'est que tes bibliothèques ne peuvent pas être incluses. Est-ce que tu as indiqué le bon chemin dans le makefile ?
a b L Programmation
7 Février 2006 22:55:05

Ces fonctions sont définies dans libglut.a
Donc vérifie que tu as bien ce fichier dans le répertoire "lib" de dev-c++

S'il n'est pas dans ce répertoire ajoute le répertoire dans les options du compilateur > répertoires de lib
Ou vérifie qu'à cet endroit tu as bien le répertoire "lib" de dev-c++
8 Février 2006 07:42:05

Ben en fait j'ai installé glut sur dev c++ avec les DevPack, et j'ai testé la démo qu'ils donnent et elle marche très bien.... :hein: , je comprends po...
8 Février 2006 07:46:07

Ah et pour répondre à ritzle, je n'ai pas fait de makefile j'ai juste cliqué sur complier directement
8 Février 2006 08:17:37

les demos marchent parce qu'elles sont linkees. Va voir dans les options des projets et tu verras des -lglut et autres options de compilation dont tu as aussi besoin dans tes propres projets.
8 Février 2006 09:25:28

Oui mais avec les DevPack c'est pas censé tout s'installer automatiquement?
8 Février 2006 09:31:19

quand tu as cree un nouveau projet, tu as sélectionné "Glut" ?
Si c'est pas le cas c'est normal, il faut faire comme khayyam l'a dit.
8 Février 2006 09:48:35

oui oui j'ai bien sélectionné glut quand j'ai crée un nouveau projet... mais de toute façon quand on veut juste tester sur un fichier (sans créer de projet), il suffit juste d'inclure glut.h non?
8 Février 2006 10:25:23

et bien ... non
il faut linker la bibliotheque.
le .h ne contient que les noms des autres objets, pas les objets eux memes qui sont dans les .a et .dll
a b L Programmation
8 Février 2006 13:13:58

ah oui j'avais pas pensé à ça lol
khayyam a trouvé le problème: tu ne lies pas avec libglut.a

Donc:
Projet>options du projet>paramètres>dans la partie editeur de lien>Ajouter fichier
et tu mets libopengl32.a et glut.a
Le mieux étant de regarder sur les exemples ce qui est écrit.
8 Février 2006 16:26:06

J'ai donc fait comme ritzle m'a dit, créer un nouveau projet et sélectionner Glut, et ça marche... pourtant j'avais deja essayé et ça n'a pas marché. Curieux, curieux... :idea:
En tout cas merci!
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS