Cube rotatif sur commande en OpenGL

Yoshiji Messages postés 9 Date d'inscription samedi 27 mars 2010 Statut Membre Dernière intervention 16 juillet 2010 - 27 mars 2010 à 16:50
shorzy Messages postés 94 Date d'inscription jeudi 23 novembre 2000 Statut Membre Dernière intervention 1 juin 2013 - 1 avril 2010 à 13:09
Bonjour,

Tout d'abord, je suis sous windows Seven 64, codant sous Code::Blocks.
J'ai un projet à faire dans le cadre de mes études :
Un cube en C en utilisant la libraire SDL ou OpenGL, au choix.
J'ai choisis l'OpenGL car c'est plus simple, et moi & le C, ça fait deux

Bref ! Je me dois de constituer un cube, 6 faces de différentes couleurs, qui "tourne" vers le haut lorsque j'appuie sur la flèche du haut, vers la droite lorsque j'appuie sur la flèche de droite, etc..

Seulement, je n'ai absolument aucune idée de comment faire mon cube. J'ai déjà installé l'OpenGL, qui s'est installée avec plusieurs autres librairies apparemment, comme GLFW, Irrlicht, Ogre, GLUT, QT4, et j'en ai peut être loupée une ou deux autres. J'ai tenté en vain depuis plusieurs jours à afficher divers exemples en OpenGL, et le seul que je puisse voir correctement sans erreur est celui qui est codé par défaut lorsqu'on ouvre un nouveau projet en OpenGL (soit un triangle multicolore qui tourne sur lui même).

Si vous pouviez m'aider à commencer, ou bien si vous êtes au courant d'un tutoriel qui pourrai m'aider, je vous en serai très reconnaissant !

Merci d'avance et bonne fin de journée

10 réponses

Yoshiji Messages postés 9 Date d'inscription samedi 27 mars 2010 Statut Membre Dernière intervention 16 juillet 2010
27 mars 2010 à 17:13
Un exemple d'erreur qui revient souvent par exemple :
C:/Users/Math/Documents/Training/main.c:69: undefined reference to `_auxInitDisplayMode@4'
C:/Users/Math/Documents/Training/main.c:70: undefined reference to `_auxInitPosition@16'
C:/Users/Math/Documents/Training/main.c:71: undefined reference to `_auxInitWindowA@4'
C:/Users/Math/Documents/Training/main.c:73: undefined reference to `_auxReshapeFunc@4'
C:/Users/Math/Documents/Training/main.c:74: undefined reference to `_auxMainLoop@4'


Je ne sais pas comment régler ce problème, une idée ?
0
Yoshiji Messages postés 9 Date d'inscription samedi 27 mars 2010 Statut Membre Dernière intervention 16 juillet 2010
27 mars 2010 à 17:15
J'oubliais, mon programme qui ne marche pas à cause de ces erreurs :
#include <windows.h>
#include <gl\gl.h>
#include <gl\glaux.h>
#include <math.h>
#define largeur 250
#define hauteur 250

GLfloat clipHeight;
GLfloat clipWidth;
void setupRC()
{
            glClearColor(0.0f, 0.0f, 0.0f, 1.0f );
            glShadeModel(GL_SMOOTH);
            //glShadeModel(GL_FLAT);
            glFrontFace(GL_CW);
            glEnable(GL_DEPTH_TEST);
}

void CALLBACK Main_part(void)
{
            glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
            glBegin(GL_POINTS);
                       glVertex2f(-10.0f,-10.0f);
            glEnd();
            glColor3f(1.0f,0.0f,1.0f);
            glBegin(GL_LINES);
                       glVertex3f(-10.0f,-10.0f,-50.0f);
                       glVertex3f(100.0f,100.0f,50.0f);
            glEnd();
            glBegin(GL_TRIANGLES);                        //la ligne coupe le triangle et est partiellement cachée
                       glColor3f(0.0f,1.0f,0.0f);
                       glVertex3f(0.0f,130.0f,0.0f);

                       glColor3f(0.0f,0.0f,1.0f);
                       glVertex3f(0.0f,0.0f,0.0f);
                       glColor3f(1.0f,0.0f,0.0f);
                       glVertex3f(130.0f,0.0f,0.0f);
            glEnd();
            glFlush();
}

void CALLBACK Reshape(GLsizei w, GLsizei h) //si il y a un changement de taille de la fenetre ...
{
            GLfloat Near = -100.0f;
            GLfloat Far = 100.0f;
            if (h 0) h 1;
            glViewport(0,0,w,h);
            glMatrixMode(GL_PROJECTION);
            glLoadIdentity();
            if (w<=h)
            {
                       clipWidth  = (GLfloat)largeur * h/w;
                       clipHeight = (GLfloat)hauteur;
            }
            else
            {
                       clipWidth = (GLfloat)largeur;
                       clipHeight = (GLfloat)hauteur * w/h;
            }
            glOrtho( -clipWidth/2, clipWidth/2, -clipHeight/2, clipHeight/2, Near, Far);
            glMatrixMode(GL_MODELVIEW);
            glLoadIdentity();
}

void main(void)
{
            auxInitDisplayMode(AUX_SINGLE | AUX_RGBA | AUX_DEPTH);
            auxInitPosition(100,100,largeur,hauteur);
            auxInitWindow("Test");
            setupRC();
            auxReshapeFunc(Reshape);
            auxMainLoop(Main_part);
}


Obtenu sur un site qui se dit "tutorial à l'opengl".
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
27 mars 2010 à 18:29
Bienvenue,

Il te manque une librairie en entrée du lieur (Problème très très classique...). Peut être glaux.lib.
0
Yoshiji Messages postés 9 Date d'inscription samedi 27 mars 2010 Statut Membre Dernière intervention 16 juillet 2010
27 mars 2010 à 18:33
Heum, comment résoudre cela ? Car je ne sais vraiment pas comment faire
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
27 mars 2010 à 18:35
Project->Build Options->Linker settings->add
0
Yoshiji Messages postés 9 Date d'inscription samedi 27 mars 2010 Statut Membre Dernière intervention 16 juillet 2010
27 mars 2010 à 18:42
J'ai mis libglaux.a, seulement, j'obtiens ce message d'erreur :
" Le point d'entrée de procédure auxInitWindowsA est introuvable dans la bibliothèque de liens dynamiques GLAUX.DLL "
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
27 mars 2010 à 19:33
Utilise dependency walker pour diagnostiquer le problème. La dll glaux.dll ne contient pas le symbol pourtant promis par libglaux.a... Est ce que la version de glaux.dll correspond bien à libglaux ?
0
Yoshiji Messages postés 9 Date d'inscription samedi 27 mars 2010 Statut Membre Dernière intervention 16 juillet 2010
27 mars 2010 à 21:22
Où puis-je savoir la version du libglaux.a ?
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
28 mars 2010 à 10:29
Heu... Aucune idée. Visiblement elle est fournie avec C::B. Mais la dll non. Donc je ne sais pas où tu as eu la dll mais il y a un risque de décalage. Peut être que tu as eu un autre libglaux.a fourni avec la dll ? Si oui, c'est plutôt celle-là qu'il faut mettre en entrée du lieur.

Mais visiblement, aux est très déconseillée (Voir "What is the AUX library?" sur cette page)
0
shorzy Messages postés 94 Date d'inscription jeudi 23 novembre 2000 Statut Membre Dernière intervention 1 juin 2013
1 avril 2010 à 13:09
Ok J'ai essaye ton Programme sur mon Poste
WinXP 32bits (peu Importe)

Glaux est dépassé !!!
Utilise Glut (c'est une Bib très utilisé)

Pour cela, j'ai modifié ton Programme
(très légèrement, et il fonctionne)
Il faut pour cela retiré tous les Appel à Glaux et utiliser Glut à la Place.
Mais peut être cela ne t'intéresse pas Si ton Prof vous Impose GLAUX !!!
Dans ce cas, sache que j'ai Liers les Fichiers Glaux.Lib, et autres, et mon PC Crachait à la Compilation.
CCL:Je ne pourrais rien pour toi avec Glaux.


Tiens moi au Courrant de la résolution de ton problème.
Si tu est décidé à passer à GLUT, (et passer Glaux à la Trappe)
je t'envoie le Progr + Les Fichiers (GLUT) qu'il te faudrais.

++
0
Rejoignez-nous