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)
![]() ![]() .:: Lorsque Chuck Norris ne trouve pas le sommeil, les moutons lui disent combien ils sont. |
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-
![]() ![]() .:: Lorsque Chuck Norris ne trouve pas le sommeil, les moutons lui disent combien ils sont. |
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 ?
![]() ![]() .:: Lorsque Chuck Norris ne trouve pas le sommeil, les moutons lui disent combien ils sont. |
Pole
|
# Posté le 19/06/2007 à 06:58:52 |
Chieur professionnel![]() Groupe : Membres |
As-tu ajouté sdlglutils.cpp?
|
-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 ? ![]() ![]() .:: Lorsque Chuck Norris ne trouve pas le sommeil, les moutons lui disent combien ils sont. |
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. |
-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... ![]() ![]() .:: Lorsque Chuck Norris ne trouve pas le sommeil, les moutons lui disent combien ils sont. |
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
![]() ![]() .:: Lorsque Chuck Norris ne trouve pas le sommeil, les moutons lui disent combien ils sont. |
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)
![]() ![]() .:: Lorsque Chuck Norris ne trouve pas le sommeil, les moutons lui disent combien ils sont. |
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.
89 Zéros connectés |
7 requêtes |
0.0603s (0.0459s)
