TutorielsVous débutez ? C'est ici qu'on commence !
Mon compte
Recherche
Livre d'or
PublicitéVous devez être inscrit pour pouvoir poster des messages
Le problème de ce sujet a été résolu
| Page : 1 | |
| Auteur | Message |
|---|---|
| 1 visiteur sur ce sujet (1 anonyme) | |
| Page : 1 | |
-Skypers-
|
# Posté le 18/06/2007 à 15:15:12 |
template <class Skypers>![]() Groupe : Membres |
Salut à tous !
Alors voila j'ai un problème plus que génant : j'utilise OpenGL ainsi que SDL pour compiler en 3D. Je suis sous Vista. J'ai réussi à faire une animation avec un cube et d'autre choses en rapport avec la modélisation en programmation. Mais, je ne peux pas charger de texture ! Je ne sais pas pourquoi ! Voici le code : Code : C++ #include <windows.h> #include <SDL/SDL.h> #include <SDL/SDL_image.h> #include <gl/gl.h> #include <gl/glu.h> #include <gl/mapping/sdlglutils.h> void __Paint(); double angleX = 0; double angleY = 0; int main(int argc, char *argv[]) { SDL_Surface *screen = NULL; SDL_Event action; bool again = true; SDL_Init(SDL_INIT_VIDEO); SDL_WM_SetCaption("Manipulation de la camera OPENGL", NULL); screen = SDL_SetVideoMode(800, 600, 32, SDL_OPENGL); // Matrix glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(70, (double)800 / 600, 1, 1000); glEnable(GL_DEPTH_TEST); // Pause while (again != false) { SDL_WaitEvent(&action); switch (action.type) { case SDL_QUIT : again = false; break; } __Paint(); } SDL_FreeSurface(screen); SDL_Quit(); return 0; } void __Paint() { GLuint texture; glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glEnable(GL_TEXTURE_2D); texture = loadTexture("stainedglass05.jpg"); gluLookAt(0.5, 0.2, 3, 0, 0, 0, 0, 1, 0); glBegin(GL_LINES); // Repere XYZ glColor3ub(0, 255, 0); glVertex3d(0, 0, 0); glVertex3d(0, 1, 0); glColor3ub(0, 0, 255); glVertex3d(0, 0, 0); glVertex3d(0, 0, -1); glColor3ub(255, 0, 0); glVertex3d(0, 0, 0); glVertex3d(1, 0, 0); glEnd(); //glRotated(angleX, 1, 0, 0); //glRotated(angleY, 0, 1, 0); glBegin(GL_QUADS); glColor3ub(255, 0, 0); glVertex3d(-1, -1, 1); // Red and green face glVertex3d(-1, 1, 1); glColor3ub(0, 255, 0); glVertex3d(1, 1, 1); glVertex3d(1, -1, 1); glVertex3d(1, -1, 1); // Green and yellow face glVertex3d(1, 1, 1); glColor3ub(252, 242, 0); glVertex3d(1, 1, -1); glVertex3d(1, -1, -1); glVertex3d(1, -1, -1); // Yellow and azur face glVertex3d(1, 1, -1); glColor3ub(66, 253, 234); glVertex3d(-1, 1, -1); glVertex3d(-1, -1, -1); glVertex3d(-1, -1, -1); // Azur and red face glVertex3d(-1, 1, -1); glColor3ub(255, 0, 0); glVertex3d(-1, 1, 1); glVertex3d(-1, -1, 1); glVertex3d(-1, 1, 1); // Up face glColor3ub(66, 253 ,234); glVertex3d(-1, 1, -1); glColor3ub(252, 242, 0); glVertex3d(1, 1, -1); glColor3ub(0, 255, 0); glVertex3d(1, 1, 1); glColor3ub(255, 0, 0); glVertex3d(-1, -1, 1); // Down face glColor3ub(66, 253 ,234); glVertex3d(-1, -1, -1); glColor3ub(252, 242, 0); glVertex3d(1, -1, -1); glColor3ub(0, 255, 0); glVertex3d(1, -1, 1); glEnd(); glFlush(); SDL_GL_SwapBuffers(); } Et le message d'erreur est le suivant (je deteste d'ailleurs cette phrase lol) Code : Console error LNK2019: unresolved external symbol "unsigned int __cdecl loadTexture(char const *,bool)" (?loadTexture@@YAIPBD_N@Z) referenced in function "void __cdecl __Paint(void)" (?__Paint@@YAXXZ)
![]() ![]() .:: Petit, Chuck Norris ne jouait pas aux billes avec les enfants de son âge car il était bien élevé : il ne jouait pas avec la nourriture. |
Yno
|
# Posté le 18/06/2007 à 15:40:01 |
SCE![]() Groupe : Membres |
La FAQ OpenGL est ton amie :
http://www.siteduzero.com/forum-83-154296-1404272.html#r1404272 En l'occurrence, ton erreur est telleemnt grosse qu'elle n'ets même pas énumérée dans la FAQ Tu as oublié de Binder ta texture avec glBindTexture()
Sinon, grosse erreur ; est-ce que tu te rend compte que tu charges ta texture à chaque tour de ta boucle principale ?? Charges-la une bonne fois pour toutes, et basta. Là, tu la recharges à chaque appel de ta fonction __Paint(), et cet appel à lieu à chaque tour de boucle. Pour ton message d'erreur, je n'ai aucune idée désolé.
Édité
le 18/06/2007 à 15:42:41
par Yno
Tutos OpenGL : Les shaders en GLSL | Rendus optimisés avec les VBOs FAQs programmation : FAQ C | FAQ OpenGL / SDL / GTK+ Un moteur 3D à que il rox | Un canal IRC qu'il est bieng : #opengl@irc.epiknet.org |
-Skypers-
|
# Posté le 18/06/2007 à 16:47:57 |
template <class Skypers>![]() Groupe : Membres |
okay merci beaucoup en effet je n'avais pas vu cette erreur ! Mais je compil avec Visual Studio 2005, ainsi que la plateformeSDK Vista, je ne devrais pas avoir ce style de problème, je ne comprends vraiment pas ! Est-il possible que se soit du au type de la convention d'appel ? ce __cdecl m'intrigue, je le retrouve dans les réglages du projet
EDIT : Quelqu'un peut-il m'aider ?
Édité
le 18/06/2007 à 18:01:25
par -Skypers-
![]() ![]() .:: Petit, Chuck Norris ne jouait pas aux billes avec les enfants de son âge car il était bien élevé : il ne jouait pas avec la nourriture. |
XT95
|
# Posté le 18/06/2007 à 23:08:07 |
|
Groupe : Membres |
Citation
Tu as oublié de Binder ta texture avec glBindTexture()
Citation Sinon, grosse erreur ; est-ce que tu te rend compte que tu charges ta texture à chaque tour de ta boucle principale ?? Charges-la une bonne fois pour toutes, et basta. Là, tu la recharges à chaque appel de ta fonction __Paint(), et cet appel à lieu à chaque tour de boucle. Pour ton message d'erreur, je n'ai aucune idée désolé. Citation okay merci beaucoup en effet je n'avais pas vu cette erreur ! Mais je compil avec Visual Studio 2005, ainsi que la plateformeSDK Vista, je ne devrais pas avoir ce style de problème, je ne comprends vraiment pas ! Est-il possible que se soit du au type de la convention d'appel ? ce __cdecl m'intrigue, je le retrouve dans les réglages du projet EDIT : Quelqu'un peut-il m'aider ? Yno vient de te répondre.. A tu biens corrigés tes 2 erreurs ? |
-Skypers-
|
# Posté le 18/06/2007 à 23:37:34 |
template <class Skypers>![]() Groupe : Membres |
Oui oui, j'ai bien corrigé ces deyx erreurs là. J'ai même essayé de linkés les headers en les ajoutant en plus au projet, j'ai linké la SDL_image, bref, d'où peut venir ce problème de function extern ?
![]() ![]() .:: Petit, Chuck Norris ne jouait pas aux billes avec les enfants de son âge car il était bien élevé : il ne jouait pas avec la nourriture. |
Pole
|
# Posté le 19/06/2007 à 06:58:52 |
Chieur professionnel![]() Groupe : Membres |
As-tu ajouté sdlglutils.cpp?
En savoir plus sur la théorie des cordes Les caisses sont vides Traité européen de 1965 : Citation : Traité FONCTIONNAIRES ET AGENTS DES COMMUNAUTÉS EUROPÉENNES Article 12 Sur le territoire de chacun des États membres et quelle que soit leur nationalité, les fonctionnaires et autres agents des Communautés: a) jouissent de l'immunité de juridiction pour les actes accomplis par eux, y compris leurs paroles et écrits, en leur qualité officielle, sous réserve de l'application des dispositions des traités relatives, d'une part, aux règles de la responsabilité des fonctionnaires et agents envers les Communautés et, d'autre part, à la compétence de la Cour pour statuer sur les litiges entre les Communautés et leurs fonctionnaires et autres agents. Ils continueront à bénéficier de cette immunité après la cessation de leurs fonctions, |
-Skypers-
|
# Posté le 19/06/2007 à 12:24:33 |
template <class Skypers>![]() Groupe : Membres |
Oui, mais je me retrouve avec heuuu +143 erreurs (beaucoup de redéfinition APIENTRY et autres).
Cette précision vous aide-t-elle ? ![]() ![]() .:: Petit, Chuck Norris ne jouait pas aux billes avec les enfants de son âge car il était bien élevé : il ne jouait pas avec la nourriture. |
Pole
|
# Posté le 19/06/2007 à 13:52:50 |
Chieur professionnel![]() Groupe : Membres |
C'est spécifique à Visual C++.
Je ne peux donc pas t'aider. En savoir plus sur la théorie des cordes Les caisses sont vides Traité européen de 1965 : Citation : Traité FONCTIONNAIRES ET AGENTS DES COMMUNAUTÉS EUROPÉENNES Article 12 Sur le territoire de chacun des États membres et quelle que soit leur nationalité, les fonctionnaires et autres agents des Communautés: a) jouissent de l'immunité de juridiction pour les actes accomplis par eux, y compris leurs paroles et écrits, en leur qualité officielle, sous réserve de l'application des dispositions des traités relatives, d'une part, aux règles de la responsabilité des fonctionnaires et agents envers les Communautés et, d'autre part, à la compétence de la Cour pour statuer sur les litiges entre les Communautés et leurs fonctionnaires et autres agents. Ils continueront à bénéficier de cette immunité après la cessation de leurs fonctions, |
-Skypers-
|
# Posté le 19/06/2007 à 13:55:17 |
template <class Skypers>![]() Groupe : Membres |
Okay d'accord je vois et sinon comment résoudre les problèmes externes non résolu ? Apparemment c'est un problème de Link, donc l'éditeur de lien ne linkerai pas bien ?
Sinon, je suis en train d'apprendre à coder cette phase, mais je ne comprends pas tout tout... ![]() ![]() .:: Petit, Chuck Norris ne jouait pas aux billes avec les enfants de son âge car il était bien élevé : il ne jouait pas avec la nourriture. |
magnanime
|
# Posté le 19/06/2007 à 14:04:17 |
![]() Groupe : Membres |
|
-Skypers-
|
# Posté le 19/06/2007 à 14:33:36 |
template <class Skypers>![]() Groupe : Membres |
Ca ne change pas grand chose vu que j'ai ajouté les deux
![]() ![]() .:: Petit, Chuck Norris ne jouait pas aux billes avec les enfants de son âge car il était bien élevé : il ne jouait pas avec la nourriture. |
HanLee
|
# Posté le 19/06/2007 à 17:41:42 |
![]() Groupe : Membres |
Juste une remarque, je sais pas si ce sera utile mais : pourquoi tu appelles ta fonction __Print() ?
Commencer par '__' est interdit. http://c.developpez.com/faq/cpp/?page=divers#DIVERS_identificateurs_interdits |
-Skypers-
|
# Posté le 19/06/2007 à 17:49:36 |
template <class Skypers>![]() Groupe : Membres |
Merci beaucoup, je ne savais pas (pourtant tout compil mais le blem vient peut-être de là, je vérifie et je te dis)
![]() ![]() .:: Petit, Chuck Norris ne jouait pas aux billes avec les enfants de son âge car il était bien élevé : il ne jouait pas avec la nourriture. |
Retour au forum "Langage C++" ou à la liste des forums
Vous devez être inscrit pour pouvoir poster des messages
Changer de design |
En savoir plus |
Plan du site |
Politique d'accessibilité |
Règles |
RSS tutoriels |
RSS news
Édité par Simple IT SARL :
Nous contacter
| Notre blog | Revue de presse | Publicité
Y'a plus rien à lire, faut remonter maintenant !
Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.
86 Zéros connectés |
6 requêtes |
0.0207s (0.0063s)
