Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > Les forums > Programmation > Langage C++ > [OpenGL] -Texture - > Lecture du sujet

[OpenGL] -Texture -

Error external

Vous devez être inscrit pour pouvoir poster des messages

RésoluLe problème de ce sujet a été résolu

Page : 1 
Auteur Message
1 visiteur sur ce sujet (1 anonyme)
Page : 1 
Hors ligne -Skypers- # Posté le 18/06/2007 à 15:15:12
template <class Skypers>
Avatar
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)

Image utilisateur
Image utilisateur
.:: 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.
 
Hors ligne Yno # Posté le 18/06/2007 à 15:40:01
SCE
Avatar
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 :D 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
 
Hors ligne -Skypers- # Posté le 18/06/2007 à 16:47:57
template <class Skypers>
Avatar
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-

Image utilisateur
Image utilisateur
.:: 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.
 
Hors ligne XT95 # Posté le 18/06/2007 à 23:08:07
Avatar
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 ?

#opengl@irc.epiknet.net
http://XT95.e3b.org
 
Hors ligne -Skypers- # Posté le 18/06/2007 à 23:37:34
template <class Skypers>
Avatar
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 ?

Image utilisateur
Image utilisateur
.:: 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.
 
Hors ligne Pole # Posté le 19/06/2007 à 06:58:52
Chieur professionnel
Avatar
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,

 
Hors ligne -Skypers- # Posté le 19/06/2007 à 12:24:33
template <class Skypers>
Avatar
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 ?

Image utilisateur
Image utilisateur
.:: 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.
 
Hors ligne Pole # Posté le 19/06/2007 à 13:52:50
Chieur professionnel
Avatar
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,

 
Hors ligne -Skypers- # Posté le 19/06/2007 à 13:55:17
template <class Skypers>
Avatar
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...

Image utilisateur
Image utilisateur
.:: 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.
 
Hors ligne magnanime # Posté le 19/06/2007 à 14:04:17
Avatar
Groupe : Membres
Citation : Pole
As-tu ajouté sdlglutils.cpp?

faudrait-il pas ajouter 'sdlglutils.h' plutôt ?
Hors ligne -Skypers- # Posté le 19/06/2007 à 14:33:36
template <class Skypers>
Avatar
Groupe : Membres
Ca ne change pas grand chose vu que j'ai ajouté les deux

Image utilisateur
Image utilisateur
.:: 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.
 
Hors ligne HanLee # Posté le 19/06/2007 à 17:41:42
Avatar
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
Hors ligne -Skypers- # Posté le 19/06/2007 à 17:49:36
template <class Skypers>
Avatar
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)

Image utilisateur
Image utilisateur
.:: 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.

Nombre de connectés 102 Zéros connectés | Requêtes SQL 8 requêtes | Temps de génération de la page : Total (SQL) 0.0419s (0.0253s)