Partage
  • Partager sur Facebook
  • Partager sur Twitter

[OpenGL] SDLGLUTILS.h erreur

Erreur du fichier telechargé ?

    23 août 2006 à 22:50:21

    Voila , salut a vous tous , je suis actuellement dans le tutos sur les textures dans OpenGL , mais apres avoir telecharger SDLGLUTILS.h ainsi que SDLGLUTILS.cpp , inseré les lignes necessaires dans le main , j'obtient comme message d'erreur de compilation :

    sdlglutils.h:11: error: syntax error before "bool"
    sdlglutils.h:13: error: syntax error before '=' token
    sdlglutils.h:14: error: syntax error before '=' token

    (Voir la fin du topic si vous ne voulez pas lire le code :p )


    Main.c:
    #include <SDL/SDL.h>
    #include <GL/gl.h>
    #include <GL/glu.h>
    #include "sdlglutils.h"

    void Dessiner();

    double angleZ = 0;
    double angleX = 0;


    int main(int argc, char *argv[])
    {
        SDL_Event event;

        SDL_Init(SDL_INIT_VIDEO);
        atexit(SDL_Quit);
        SDL_WM_SetCaption("SDL GL Application", NULL);
        SDL_SetVideoMode(640, 480, 32, SDL_OPENGL);
        SDL_EnableKeyRepeat(10, 10);

        glMatrixMode( GL_PROJECTION );
        glLoadIdentity();
        gluPerspective(70,(double)640/480,1,1000);
        glEnable(GL_DEPTH_TEST);
        glEnable(GL_TEXTURE_2D);
        GLuint texture1 = loadTexture("ma_texture.jpg");
        texture1 = loadTexture("stainedglass05.jpg");

        Dessiner();

        Uint32 last_time = SDL_GetTicks();
        Uint32 current_time,ellapsed_time;
        Uint32 start_time;

        for (;;)
        {
            SDL_WaitEvent(&event);

            switch(event.type)
            {
                case SDL_QUIT:
                exit(0);
                break;
                case SDL_KEYDOWN:
                switch (event.key.keysym.sym)
                {
                    case SDLK_LEFT: /* Appui sur la touche Echap, on arrête le programme */
                    angleZ++;
                        break;
                    case SDLK_RIGHT: /* Appui sur la touche Echap, on arrête le programme */
                    angleZ--;
                    case SDLK_UP: /* Appui sur la touche Echap, on arrête le programme */
                    angleX++;
                        break;
                    case SDLK_DOWN: /* Appui sur la touche Echap, on arrête le programme */
                    angleX--;
                        break;
                }
                break;
            }

            Dessiner();
        }

        return 0;
    }

    void Dessiner()
    {
        glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
        GLuint texture1 = loadTexture("ma_texture.jpg");

        glMatrixMode( GL_MODELVIEW );
        glLoadIdentity( );

        gluLookAt(3,4,2,0,0,0,0,0,1);

        glRotated(angleZ,0,0,1);
        glRotated(angleX,1,0,0);

        glBegin(GL_QUADS);

        glColor3ub(0,0,255); //face bleu
        glVertex3d(1,-1,1);
        glVertex3d(1,-1,-1);
        glVertex3d(-1,-1,-1);
        glVertex3d(-1,-1,1);


        glColor3ub(255,255,0); //Face jaune
        glVertex3d(-1,1,1);
        glVertex3d(-1,1,-1);
        glVertex3d(-1,-1,-1);
        glVertex3d(-1,-1,1);
        glEnd();



        glBindTexture(GL_TEXTURE_2D, texture1);
        glBegin(GL_QUADS);
        glTexCoord2d(0,1);  glVertex3d(1,1,1);
        glTexCoord2d(0,0);  glVertex3d(1,1,-1);
        glTexCoord2d(1,0);  glVertex3d(-1,1,-1);
        glTexCoord2d(1,1);  glVertex3d(-1,1,1);
        glEnd();

        glBegin(GL_QUADS);


        glColor3ub(0,255,0); //Face verte
        glVertex3d(1,1,1);
        glVertex3d(1,1,-1);
        glVertex3d(1,-1,-1);
        glVertex3d(1,-1,1);

        glColor3ub(0,255,255); //face cyan
        glVertex3d(1,1,-1);
        glVertex3d(1,-1,-1);
        glVertex3d(-1,-1,-1);
        glVertex3d(-1,1,-1);

        glColor3ub(255,0,255); //face magenta
        glVertex3d(1,-1,1);
        glVertex3d(1,1,1);
        glVertex3d(-1,1,1);
        glVertex3d(-1,-1,1);

        glEnd();




        glFlush();
        SDL_GL_SwapBuffers();
    }



    Quand aux fichiers telechargés et bien ... Ce sont les memes que sur le site . Sinon , dans mon dossier de projet j'ai "stainedglass05.jpg'"SDL.dll" et les fichiers de mon projet .

    Merci ;)
    (Si vous voulez eviter de lire tout ca , pouvez vous me copier votre code de base pour l'application d'une texture car celui telechargé ne semble pas fonctionner chez moi avec mon main.c et celui censé etre dispo sur le site : http://www.siteduzero.com/tuto-3-6556-1-les-textures.html : n'est pas disponible )

    Merci
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      23 août 2006 à 22:55:21

      il faut aussi SDL_image. et c'est du C++ pas du C donc si ton main est un .c renome le en .cpp ;)
      • Partager sur Facebook
      • Partager sur Twitter
        23 août 2006 à 22:56:27

        J'ai essayé ce que tu m'a proposé mais il me dit toujours

        "sdlglutils.h:11: error: syntax error before "bool"
        sdlglutils.h:13: error: syntax error before '=' token
        sdlglutils.h:14: error: syntax error before '=' token"

        Et le fichier en lui meme :
        #ifndef SDLGLUTILS_H
        #define SDLGLUTILS_H

        #include <GL/gl.h>
        #include <SDL/SDL.h>

        #ifndef GL_CLAMP_TO_EDGE
        #define GL_CLAMP_TO_EDGE 0x812F
        #endif

        GLuint loadTexture(const char * filename,bool useMipMap = true);
        int takeScreenshot(const char * filename);
        void drawAxis(double scale = 1);
        int initFullScreen(unsigned int * width = NULL,unsigned int * height = NULL);
        int XPMFromImage(const char * imagefile, const char * XPMfile);
        SDL_Cursor * cursorFromXPM(const char * xpm[]);

        #endif //SDLGLUTILS_H



        (Question idiote :euh: filename ne doit pas etre changé ? Car je pense pas puisque dans son tuto , il nous dit d'inclure seulement les 2 fichiers et de ne pas se soucier d'eux)Mais sinon , tu n'aurais pas un main comme celui ci pour poster s'il te plait ? :D
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          23 août 2006 à 23:03:11

          Dans le pire des cas, tu peux modifier en ça:

          int takeScreenshot(const char * filename);
          void drawAxis(double scale);
          int initFullScreen(unsigned int * width,unsigned int * height);
          int XPMFromImage(const char * imagefile, const char * XPMfile);
          SDL_Cursor * cursorFromXPM(const char * xpm[]);


          et fait ces changement dans les fonctions aussi.
          Pour loadTexture, fait voir la fonction entière
          • Partager sur Facebook
          • Partager sur Twitter
            23 août 2006 à 23:08:56

            :( j'ai essayé (Mal ?) ca ne marche pas mais dans tout les cas merci de passer du temps sur un petit probleme de zero :p


            GLuint loadTexture(const char * filename,bool useMipMap)
            {
                GLuint glID;
                SDL_Surface * picture_surface = NULL;
                SDL_Surface *gl_surface = NULL;
                SDL_Surface * gl_fliped_surface = NULL;
                Uint32 rmask, gmask, bmask, amask;

                picture_surface = IMG_Load(filename);
                if (picture_surface == NULL)
                    return 0;

            #if SDL_BYTEORDER == SDL_BIG_ENDIAN

                rmask = 0xff000000;
                gmask = 0x00ff0000;
                bmask = 0x0000ff00;
                amask = 0x000000ff;
            #else

                rmask = 0x000000ff;
                gmask = 0x0000ff00;
                bmask = 0x00ff0000;
                amask = 0xff000000;
            #endif

                SDL_PixelFormat format = *(picture_surface->format);
                format.BitsPerPixel = 32;
                format.BytesPerPixel = 4;
                format.Rmask = rmask;
                format.Gmask = gmask;
                format.Bmask = bmask;
                format.Amask = amask;

                gl_surface = SDL_ConvertSurface(picture_surface,&format,SDL_SWSURFACE);

                gl_fliped_surface = flipSurface(gl_surface);

                glGenTextures(1, &glID);

                glBindTexture(GL_TEXTURE_2D, glID);


                if (useMipMap)
                {

                    gluBuild2DMipmaps(GL_TEXTURE_2D, 4, gl_fliped_surface->w,
                                      gl_fliped_surface->h, GL_RGBA,GL_UNSIGNED_BYTE,
                                      gl_fliped_surface->pixels);

                    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,
                                    GL_LINEAR_MIPMAP_LINEAR);

                }
                else
                {
                    glTexImage2D(GL_TEXTURE_2D, 0, 4, gl_fliped_surface->w,
                                 gl_fliped_surface->h, 0, GL_RGBA,GL_UNSIGNED_BYTE,
                                 gl_fliped_surface->pixels);
                    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
                }
                glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);


                SDL_FreeSurface(gl_fliped_surface);
                SDL_FreeSurface(gl_surface);
                SDL_FreeSurface(picture_surface);

                return glID;
            }
            Pour LoadTexture
            • Partager sur Facebook
            • Partager sur Twitter
              23 août 2006 à 23:12:19

              C'est parce que Kayl utilise le C++, tu dois modifier ton projet en conséquences ( passer au C++ )
              • Partager sur Facebook
              • Partager sur Twitter
                23 août 2006 à 23:13:01

                Donc creer un nouveau projet en choisissant C++ ? (J'avais deja renommé mon main en main.cpp mais je vais essayer)


                Apres avoir créé un nouveau projet C++ , il m'affiche

                .objs\sdlglutils.o:sdlglutils.cpp:(.text+0x2b): undefined reference to `IMG_Load'
                .objs\sdlglutils.o:sdlglutils.cpp:(.text+0x6f7): undefined reference to `IMG_Load'
                E:\Program Files\CodeBlocks\lib\libscrnsave.a(scrnsave.o):scrnsave.c:(.text+0x4d6): undefined reference to `GetStockObject@4'
                E:\Program Files\CodeBlocks\lib\libscrnsave.a(scrnsave.o):scrnsave.c:(.text+0x57b): undefined reference to `RegisterDialogClasses@4'
                E:\Program Files\CodeBlocks\lib\libscrnsave.a(scrnsave.o):scrnsave.c:(.text+0x786): undefined reference to `RegisterDialogClasses@4'
                E:\Program Files\CodeBlocks\lib\libscrnsave.a(scrnsave.o):scrnsave.c:(.text+0x799): undefined reference to `ScreenSaverConfigureDialog@16'
                E:\Program Files\CodeBlocks\lib\libscrnsave.a(scrnsave.o):scrnsave.c:(.text+0x176): undefined reference to `ScreenSaverProc@16'
                collect2: ld returned 1 exit status



                Je crois que je suis dépassé la et que je vais peut etre faire une pause avant les textures en attendant qu'il remette en ligne les 3 fichiers :(
                • Partager sur Facebook
                • Partager sur Twitter
                Anonyme
                  23 août 2006 à 23:20:43

                  Edit: Bon ben comme ça a bugé et que je peut pas reposter apres toi,

                  undefined reference to `IMG_Load' veut dire que tu n'as pas linker SDL_image

                  /edit

                  J'men rapelle j'avais eu le même problème, alors j'avais transformé le fichier en C
                  donc pour loadTexture essaye ça:

                  GLuint loadTexture(const char * filename,int useMipMap);


                  partout ou tu vois des "bool" met des "int" et partout ou il y a des "argument = valeur" dans les fonctions retire le " = valeur". comme dans

                  void drawAxis(double scale = 1); qui est devenu
                  void drawAxis(double scale);

                  une fois que c'est fini, renome tout tes .cpp en .c

                  Dans ton main change for(;;) par while( continuer )
                  et en dessous de SDL_Event event; met int continuer = 1;

                  et pour finir, remplace le exit(0); par continuer = 0;

                  ça devrait fonctionner la :D
                  • Partager sur Facebook
                  • Partager sur Twitter
                    23 août 2006 à 23:34:24

                    J'ai mis du temps a trouver ton post ^^ ok merci je vais essayer

                    Edit (Les messages d'erreur sont juste en dessous ; tu n'aurais pas le fichier original que tu as fait un jour ? Si non surtout ne te dérange pas a me corriger mais j'aimerais l'avoir afin de comparer le "bon" et le "pas bon" :D )
                    (J'avais fait tout ce que tu as dit , la chasse aux booleans ...)
                    Merci ;)


                    E:\Program Files\CodeBlocks\lib\libscrnsave.a(scrnsave.o):scrnsave.c:(.text+0x4d6): undefined reference to `GetStockObject@4'
                    E:\Program Files\CodeBlocks\lib\libscrnsave.a(scrnsave.o):scrnsave.c:(.text+0x57b): undefined reference to `RegisterDialogClasses@4'
                    E:\Program Files\CodeBlocks\lib\libscrnsave.a(scrnsave.o):scrnsave.c:(.text+0x786): undefined reference to `RegisterDialogClasses@4'
                    E:\Program Files\CodeBlocks\lib\libscrnsave.a(scrnsave.o):scrnsave.c:(.text+0x799): undefined reference to `ScreenSaverConfigureDialog@16'
                    E:\Program Files\CodeBlocks\lib\libscrnsave.a(scrnsave.o):scrnsave.c:(.text+0x176): undefined reference to `ScreenSaverProc@16'
                    collect2: ld returned 1 exit status


                    Tu crois que ca peut provenir d'une librairie mal installée ? Mais je doute car ca vient du fichier principal lib de Codeblock et pas de celui qui est dans le sous dossier donc j'ai rient touché a celui ci
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Anonyme
                      24 août 2006 à 0:23:25

                      Enfaite la chasse au bool c'était que pour que ça soit compatible en C. Donc il faut un projet en C :p

                      Sinon, si tu le veux en C++ remet ton main comme c'était au tout début du topic, sauf qu'au lieu qu'il soit un fichier .c met le en fichier .cpp et tout ça dans un projet cpp et non c. apres tu link SDL_Image ( comme dans le cour de M@téo ) et ça devrait être correcte.

                      Pour le fichier que j'avais fait, malheuresement il a été supprimer après un bug de partition magique :(

                      Edit:
                      Quoi qu'en regardant bien, l'erreur est assez bisard vu qu'elle viens d'un .a de Code::Block :\
                      • Partager sur Facebook
                      • Partager sur Twitter
                        24 août 2006 à 0:26:10

                        Ok merci encore je vais essayer dans quelques minutes :D



                        'Bonne nouvelle' : Plus que 2 erreurs assez simples :-°

                        sdlglutils.cpp:12: error: expected unqualified-id before '{' token
                        sdlglutils.cpp:12: error: expected `,' or `;' before '{' token
                        Process terminated with status 1 (0 minutes, 2 seconds)


                        Quand au Sdlglutils.cpp :

                        #include "sdlglutils.h"
                        #include <SDL/SDL.h>
                        #include <SDL/SDL_image.h>
                        #include <GL/glu.h>

                        #include <cstring>
                        #include <cstdlib>

                        SDL_Surface * flipSurface(SDL_Surface * surface);

                        GLuint loadTexture(const char * filename,int useMipMap);
                        {
                            GLuint glID;
                            SDL_Surface * picture_surface = NULL;
                            SDL_Surface *gl_surface = NULL;
                            SDL_Surface * gl_fliped_surface = NULL;
                            Uint32 rmask, gmask, bmask, amask;

                            picture_surface = IMG_Load(filename);
                            if (picture_surface == NULL)
                                return 0;

                        #if SDL_BYTEORDER == SDL_BIG_ENDIAN

                            rmask = 0xff000000;
                            gmask = 0x00ff0000;
                            bmask = 0x0000ff00;
                            amask = 0x000000ff;
                        #else

                            rmask = 0x000000ff;
                            gmask = 0x0000ff00;
                            bmask = 0x00ff0000;
                            amask = 0xff000000;
                        #endif

                            SDL_PixelFormat format = *(picture_surface->format);
                            format.BitsPerPixel = 32;
                            format.BytesPerPixel = 4;
                            format.Rmask = rmask;
                            format.Gmask = gmask;
                            format.Bmask = bmask;
                            format.Amask = amask;

                            gl_surface = SDL_ConvertSurface(picture_surface,&format,SDL_SWSURFACE);

                            gl_fliped_surface = flipSurface(gl_surface);

                            glGenTextures(1, &glID);

                            glBindTexture(GL_TEXTURE_2D, glID);


                            if (useMipMap)
                            {

                                gluBuild2DMipmaps(GL_TEXTURE_2D, 4, gl_fliped_surface->w,
                                                  gl_fliped_surface->h, GL_RGBA,GL_UNSIGNED_BYTE,
                                                  gl_fliped_surface->pixels);

                                glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,
                                                GL_LINEAR_MIPMAP_LINEAR);

                            }
                            else
                            {
                                glTexImage2D(GL_TEXTURE_2D, 0, 4, gl_fliped_surface->w,
                                             gl_fliped_surface->h, 0, GL_RGBA,GL_UNSIGNED_BYTE,
                                             gl_fliped_surface->pixels);
                                glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
                            }
                            glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);


                            SDL_FreeSurface(gl_fliped_surface);
                            SDL_FreeSurface(gl_surface);
                            SDL_FreeSurface(picture_surface);

                            return glID;
                        }

                        int takeScreenshot(const char * filename)
                        {
                            GLint viewport[4];
                            Uint32 rmask, gmask, bmask, amask;
                            SDL_Surface * picture, * finalpicture;

                            glGetIntegerv(GL_VIEWPORT, viewport);

                        #if SDL_BYTEORDER == SDL_BIG_ENDIAN

                            rmask = 0xff000000;
                            gmask = 0x00ff0000;
                            bmask = 0x0000ff00;
                            amask = 0x000000ff;
                        #else

                            rmask = 0x000000ff;
                            gmask = 0x0000ff00;
                            bmask = 0x00ff0000;
                            amask = 0xff000000;
                        #endif

                            picture = SDL_CreateRGBSurface(SDL_SWSURFACE,viewport[2],viewport[3], 32,
                                                           rmask, gmask, bmask, amask);
                            SDL_LockSurface(picture);
                            glReadPixels(viewport[0],viewport[1],viewport[2],viewport[3],GL_RGBA,
                                         GL_UNSIGNED_BYTE,picture->pixels);
                            SDL_UnlockSurface(picture);

                            finalpicture = flipSurface(picture);

                            if (SDL_SaveBMP(finalpicture, filename))
                            {
                                return -1;
                            }
                            SDL_FreeSurface(finalpicture);
                            SDL_FreeSurface(picture);

                            return 0;
                        }

                        SDL_Surface * flipSurface(SDL_Surface * surface)
                        {
                            int current_line,pitch;
                            SDL_Surface * fliped_surface = SDL_CreateRGBSurface(SDL_SWSURFACE,
                                                           surface->w,surface->h,
                                                           surface->format->BitsPerPixel,
                                                           surface->format->Rmask,
                                                           surface->format->Gmask,
                                                           surface->format->Bmask,
                                                           surface->format->Amask);



                            SDL_LockSurface(surface);
                            SDL_LockSurface(fliped_surface);

                            pitch = surface->pitch;
                            for (current_line = 0; current_line < surface->h; current_line ++)
                            {
                                memcpy(&((unsigned char* )fliped_surface->pixels)[current_line*pitch],
                                       &((unsigned char* )surface->pixels)[(surface->h - 1  -
                                                                            current_line)*pitch],
                                       pitch);
                            }

                            SDL_UnlockSurface(fliped_surface);
                            SDL_UnlockSurface(surface);
                            return fliped_surface;
                        }

                        void drawAxis(double scale)
                        {
                            glPushAttrib(GL_ALL_ATTRIB_BITS);
                            glPushMatrix();
                            glDisable(GL_LIGHTING);
                            glDisable(GL_TEXTURE_2D);
                            glEnable(GL_BLEND);
                            glEnable(GL_LINE_SMOOTH);
                            glLineWidth(2);
                            glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
                            glScaled(scale,scale,scale);
                            glBegin(GL_LINES);
                            glColor3ub(255,0,0);
                            glVertex3i(0,0,0);
                            glVertex3i(1,0,0);
                            glColor3ub(0,255,0);
                            glVertex3i(0,0,0);
                            glVertex3i(0,1,0);
                            glColor3ub(0,0,255);
                            glVertex3i(0,0,0);
                            glVertex3i(0,0,1);
                            glEnd();
                            glPopMatrix();
                            glPopAttrib();
                        }

                        int initFullScreen(unsigned int * width,unsigned int * height)
                        {
                            SDL_Rect ** modes;

                            modes = SDL_ListModes(NULL,SDL_FULLSCREEN|SDL_OPENGL);
                            if ((modes == (SDL_Rect **)0)||(modes == (SDL_Rect **)-1))
                                return 0;

                            if (width != NULL)
                                *width = modes[0]->w;
                            if (height != NULL)
                                *height = modes[0]->h;
                            if (SDL_SetVideoMode(modes[0]->w,
                                                 modes[0]->h,
                                                 SDL_GetVideoInfo()->vfmt->BitsPerPixel,
                                                 SDL_FULLSCREEN|SDL_OPENGL) == NULL)
                                return -1;
                            else
                            {
                                return 0;
                            }
                        }

                        int XPMFromImage(const char * imagefile, const char * XPMfile)
                        {
                            SDL_Surface * image,*image32bits;
                            FILE * xpm;
                            Uint32 pixel;
                            Uint8 r,g,b,a;
                            int x,y;
                            unsigned int w;
                            char * xpm_name;
                            Uint32 rmask, gmask, bmask, amask;

                            image = IMG_Load(imagefile);
                            if (image == NULL)
                                return -1;

                            #if SDL_BYTEORDER == SDL_BIG_ENDIAN

                            rmask = 0xff000000;
                            gmask = 0x00ff0000;
                            bmask = 0x0000ff00;
                            amask = 0x000000ff;
                        #else

                            rmask = 0x000000ff;
                            gmask = 0x0000ff00;
                            bmask = 0x00ff0000;
                            amask = 0xff000000;
                        #endif

                            image32bits = SDL_CreateRGBSurface(SDL_SWSURFACE,
                                                              image->w,image->h,
                                                              32,rmask, gmask, bmask, amask);

                            SDL_BlitSurface(image,NULL,image32bits,NULL);
                            SDL_FreeSurface(image);

                            xpm = fopen(XPMfile,"w");

                            xpm_name = (char*)malloc(strlen(imagefile)*sizeof(char));
                            strcpy(xpm_name,imagefile);
                            if (strchr(xpm_name,'.') != NULL)
                                *strchr(xpm_name,'.') = '\0';
                            fprintf(xpm,"const char *%s[] =\n",xpm_name);
                            free(xpm_name);

                            fprintf(xpm,"\t{\n");
                            fprintf(xpm,"\t\t/* width height num_colors chars_per_pixel */\n");
                            w = ((image->w%8) == 0)?image32bits->w:8*(image32bits->w/8+1);

                            fprintf(xpm,"\t\t\" %d %d 3 1 \",\n",w,image32bits->h);
                            fprintf(xpm,"\t\t/* colors */\n");
                            fprintf(xpm,"\t\t\"X c #000000\",\n");
                            fprintf(xpm,"\t\t\". c #ffffff\",\n");
                            fprintf(xpm,"\t\t\"  c None\",\n");
                            fprintf(xpm,"\t\t/* pixels */\n");

                            SDL_LockSurface(image32bits);

                            for (y = 0; y < image32bits->h; y ++)
                            {
                                fprintf(xpm,"\t\t\"");
                                for (x = 0; x < image32bits->w ; x ++)
                                {
                                    pixel = ((Uint32*)image32bits->pixels)[x+y*image32bits->pitch/4];
                                    SDL_GetRGBA(pixel,image32bits->format,&r,&g,&b,&a);
                                    if (a < 128)
                                        fprintf(xpm,"
                        ");
                                    else if ((r >= 128)||(g >= 128)||(b >= 128))
                                        fprintf(xpm,"
                        .");
                                    else
                                        fprintf(xpm,"
                        X");
                                }
                                for (x = image32bits->w ; x < w ; x ++)
                                    fprintf(xpm,"
                        ");
                                fprintf(xpm,"
                        \",\n");
                            }

                            SDL_UnlockSurface(image32bits);
                            SDL_FreeSurface(image32bits);
                            fprintf(xpm,"\t\t\"0,0\"\n");
                            fprintf(xpm,"\t};\n");
                            return 0;
                        }

                        SDL_Cursor * cursorFromXPM(const char * xpm[])
                        {
                            int i, row, col;
                            int width, height;
                            Uint8 * data;
                            Uint8 * mask;
                            int hot_x, hot_y;
                            SDL_Cursor * cursor = NULL;

                            sscanf(xpm[0], "%d %d", &width, &height);
                            data = (Uint8*)calloc(width/8*height,sizeof(Uint8));
                            mask = (Uint8*)calloc(width/8*height,sizeof(Uint8));

                            i = -1;
                            for ( row=0; row<height; ++row )
                            {
                                for ( col=0; col<width; ++col )
                                {
                                    if ( col % 8 )
                                    {
                                        data[i] <<= 1;
                                        mask[i] <<= 1;
                                    }
                                    else
                                    {
                                        ++i;
                                        data[i] = mask[i] = 0;
                                    }
                                    switch (xpm[4+row][col])
                                    {
                                        case 'X':
                                        data[i] |= 0x01;
                                        mask[i] |= 0x01;
                                        break;
                                        case '.':
                                        mask[i] |= 0x01;
                                        break;
                                        case ' ':
                                        break;
                                    }
                                }
                            }
                            sscanf(xpm[4+row], "%d,%d", &hot_x, &hot_y);
                            cursor = SDL_CreateCursor(data, mask, width, height, hot_x, hot_y);
                            free(data);
                            free(mask);
                            return cursor;
                        }


                        Merci ! ;)
                        • Partager sur Facebook
                        • Partager sur Twitter
                        Anonyme
                          24 août 2006 à 1:16:32

                          regarde bien :D
                          GLuint loadTexture(const char * filename,int useMipMap);
                          {


                          Secret (cliquez pour afficher)
                          le point virgule ;)
                          • Partager sur Facebook
                          • Partager sur Twitter
                            24 août 2006 à 1:19:36

                            Ben j'ai pas touché a ce fichier la moi donc c'est le fichier de départ qui ne va pas 0_o

                            Aie sinon (malediction qui s'abat sur moi et sur toi par la meme occasion :D )

                            Si j'enleve le ";" , ca me met

                            sdlglutils.h:11: error: too few arguments to function `GLuint loadTexture(const char*, int)'
                            main.cpp:28: error: at this point in file
                            sdlglutils.h:11: error: too few arguments to function `GLuint loadTexture(const char*, int)'
                            main.cpp:29: error: at this point in file
                            main.cpp: In function `void Dessiner()':
                            sdlglutils.h:11: error: too few arguments to function `GLuint loadTexture(const char*, int)'
                            main.cpp:73: error: at this point in file
                            Process terminated with status 1 (0 minutes, 0 seconds)


                            Merci ^^

                            (Sinon j'ai meme pas affiché ton secret :lol: )

                            Si ca peut aider , je peux toujours envoyer le projet
                            • Partager sur Facebook
                            • Partager sur Twitter
                            Anonyme
                              24 août 2006 à 1:26:11

                              la tu utilises le sdlglutils.cpp modifié ( sans les bool et tout le reste ) retélécharge celui du cours ;)
                              • Partager sur Facebook
                              • Partager sur Twitter
                                24 août 2006 à 1:27:06

                                Rolala je suis en train de dormir contrairement a certains moi :lol:


                                Edit : C'est reparti pour un tour de .o :colere2:

                                .objs\sdlglutils.o:sdlglutils.cpp:(.text+0x2b): undefined reference to `IMG_Load'
                                .objs\sdlglutils.o:sdlglutils.cpp:(.text+0x6f7): undefined reference to `IMG_Load'
                                E:\Program Files\CodeBlocks\lib\libscrnsave.a(scrnsave.o):scrnsave.c:(.text+0x4d6): undefined reference to `GetStockObject@4'
                                E:\Program Files\CodeBlocks\lib\libscrnsave.a(scrnsave.o):scrnsave.c:(.text+0x57b): undefined reference to `RegisterDialogClasses@4'
                                E:\Program Files\CodeBlocks\lib\libscrnsave.a(scrnsave.o):scrnsave.c:(.text+0x786): undefined reference to `RegisterDialogClasses@4'
                                E:\Program Files\CodeBlocks\lib\libscrnsave.a(scrnsave.o):scrnsave.c:(.text+0x799): undefined reference to `ScreenSaverConfigureDialog@16'
                                E:\Program Files\CodeBlocks\lib\libscrnsave.a(scrnsave.o):scrnsave.c:(.text+0x176): undefined reference to `ScreenSaverProc@16'
                                collect2: ld returned 1 exit status


                                Je tente la reinstallation de CodeBlock ?
                                • Partager sur Facebook
                                • Partager sur Twitter
                                Anonyme
                                  24 août 2006 à 1:35:28

                                  SDL_image pour les 2 première erreurs apres pour le reste je vois pas du tout :s
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    24 août 2006 à 1:36:30

                                    Ben j'essaierais demain matin de reinstaller le tout (Pas tout de suite j'ai deja fait assez de betise comme ca :D)

                                    Un enorme merci a toi et bonne nuit a tous les Zeros ;)
                                    • Partager sur Facebook
                                    • Partager sur Twitter

                                    [OpenGL] SDLGLUTILS.h erreur

                                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                    • Editeur
                                    • Markdown