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
.:: Lorsque Chuck Norris ne trouve pas le sommeil, les moutons lui disent combien ils sont.
 
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
.:: Lorsque Chuck Norris ne trouve pas le sommeil, les moutons lui disent combien ils sont.
 
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
.:: Lorsque Chuck Norris ne trouve pas le sommeil, les moutons lui disent combien ils sont.
 
Hors ligne Pole # Posté le 19/06/2007 à 06:58:52
Chieur professionnel
Avatar
Groupe : Membres
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
.:: Lorsque Chuck Norris ne trouve pas le sommeil, les moutons lui disent combien ils sont.
 
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.
 
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
.:: Lorsque Chuck Norris ne trouve pas le sommeil, les moutons lui disent combien ils sont.
 
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
.:: Lorsque Chuck Norris ne trouve pas le sommeil, les moutons lui disent combien ils sont.
 
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
.:: 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.

Nombre de connectés 89 Zéros connectés | Requêtes SQL 7 requêtes | Temps de génération de la page : Total (SQL) 0.0603s (0.0459s)