Partage
  • Partager sur Facebook
  • Partager sur Twitter

OpenGL : Fenetre vide.

le code de Kayl est peut-être foireux :D

Sujet résolu
    12 juin 2006 à 20:16:05

    Bonsoir à tous.

    J'ai un petit problème avec le tuto de Kayl sur OpenGL, son premier exemple ne marche pas chez moi, pourtant, aucune erreur à la compilation.
    Je compile sous linux avec g++, voici le code de compilation :
    $ g++ -o exec -lSDL -lSDLmain -lGL -lGLU -lXmu -lX11 main.cpp


    J'ai également inclu les headers gl.h et glu.h, ainsi que SDL.h.

    Le programme se compile correctement, s'execute correctement, sauf que la fenetre qui s'ouvre est vide, un fond noire o_O

    J'ai aussi remarqué quelque chose de bizarre, je n'ai aucun fichier nommé lopengl.a ou .so sur mon linux (debian sarge). (pourtant la démo de quake4 se lance parfaitement, ainsi que d'autres applications opengl)

    La commande :
    find / -name lopengl -print

    ne retourne aucun résultat. (je n'ai donc, soit-disant, pas la librairie lopengl.so qui, selon Kayl, permet l'execution des programmes opengl, mais il était plutôt beau mon quake4 :D )

    Je pense que vous avez compris mon problème, et que vous savez ce que je voudrai :p

    Merci pour votre aide :)

    Bonne soirée.
    • Partager sur Facebook
    • Partager sur Twitter
      12 juin 2006 à 20:18:53

      c'est opengl.a (*.so) et pas lopengl

      et puis ces fichiers ne servent qu'à compiler du code opengl et pas l'exécuter.
      • Partager sur Facebook
      • Partager sur Twitter
        12 juin 2006 à 20:51:44

        T'as pas besoin de -lXmu ni de -lX11.

        Si tu n'as pas libopengl.so, le programme te l'indique dès son lancement. Si tu n'as pas libopengl.a, le linker te l'indique. Ca ne vient pas de là.

        Il va falloir nous donner plus de détails... sinon, tu es sûr, aucune sortie à la compilation ou à l'exécution ?
        • Partager sur Facebook
        • Partager sur Twitter
          12 juin 2006 à 21:56:18

          Salut!!
          met ca : -L/usr/X11R6/lib -lGL -lGLU -lglut -lX11 -lXmu -lXi -lm -lSDL -ljpeg -lSDL_image -lSDL_ttf
          Ca marche pour tout les tutos de ce site ! Tu peux en enlever quelques un si t'en a pas besoin ! Le mieux c'est de faire un script de ce genre :


          #!/bin/sh
          clear
          echo "*******************************************************"
          echo "Compilation..."
          echo ""
          g++ $1.cpp -o $1 -L/usr/X11R6/lib -lGL -lGLU -lglut -lX11 -lXmu -lXi -lm -lSDL -ljpeg -lSDL_image -lSDL_ttf $2 $3 $4 $5 $6 $7 $8 $9
          echo "*******************************************************"
          echo "Lancement..."
          ./$1
          echo ""
          echo "*******************************************************"

          • Partager sur Facebook
          • Partager sur Twitter
            12 juin 2006 à 23:42:51

            Citation : minirop

            c'est opengl.a (*.so) et pas lopengl

            et puis ces fichiers ne servent qu'à compiler du code opengl et pas l'exécuter.



            C'est bizarre, je n'ai aucun de ces fichiers, mais les jeux (style ppracer ou supetux :p) qui appellent les lib GL marchent très bien.
            Pourtant, un .so ne serte pas qu'a executer, non ??


            Sinon, non, je n'ai aucun problème ni a l'execution ni a la compilation, ma console reste tout propre, il n'y a ni avertissement, ni erreurs, rien. ...Comme quasi toute les commandes UNIX qui ont réussi.

            Aussi, dans le tuto, Kayl demmande de rajouter -lXmu et -lX11. ce serrait donc bizarre que ça ne serve ça rien o_O


            En lançant ce que tu (XT95) m'a écrit, (et en virant SDL_image et SDL_ttf), ça fait exactement parreil qu'avant : ça se compile sans erreurs, mais ça ne marche pas mieux.



            Sinon, où pourrais-je trouver les libs qu'il semble me manquer (opengl.a et .so) ?

            Merci d'avance !
            • Partager sur Facebook
            • Partager sur Twitter
              12 juin 2006 à 23:46:21

              Yno > J'ai pris les options que j'ai vu sur la FAQ OpenGL. Il se peut qu'elles ne soient pas exhaustives ou toutes utiles.

              J'essayerai de m'installer un Linux mimimal avec vmware pour pouvoir voir les pieges sous Linux (ça fait un bail que j'ai plus fait du Linux, mais je n'avais pas eu de pb majeur pour compiler).
              • Partager sur Facebook
              • Partager sur Twitter
                13 juin 2006 à 14:16:24

                Tiens voilà un makefile pour le chapitre des textures, tu peux y voir les options nécessaires pour le linkage :


                all: main.o sdlglutils.o
                g++ -lSDL -lSDLmain -lSDL_image -lGL -lGLU -o sdlglapp main.o sdlglutils.o

                sdlglutils.o: sdlglutils.cpp
                g++ -c sdlglutils.cpp

                main.o: main.cpp
                g++ -c main.cpp


                J'ai personnellement essayé le premier bout de code du cours :
                #include <SDL/SDL.h>
                #include <GL/gl.h>
                #include <GL/glu.h>

                int main(int argc, char *argv[])
                {
                    SDL_Init(SDL_INIT_VIDEO);
                    SDL_WM_SetCaption("Un joli \"carré\"",NULL);
                    SDL_SetVideoMode(640, 480, 32, SDL_OPENGL);

                    bool continuer = true;
                    SDL_Event event;

                    while (continuer)
                    {
                        SDL_WaitEvent(&event);
                        switch(event.type)
                        {
                            case SDL_QUIT:
                                continuer = false;
                        }

                         glClear(GL_COLOR_BUFFER_BIT);

                        glBegin(GL_QUADS);
                            glColor3ub(0,0,255);
                            glVertex2d(-0.75,-0.75);
                            glVertex2d(-0.75,0.75);
                            glColor3ub(255,0,0);
                            glVertex2d(0.75,0.75);
                            glVertex2d(0.75,-0.75);
                        glEnd();

                        glFlush();
                        SDL_GL_SwapBuffers();
                    }

                    SDL_Quit();

                    return 0;
                }


                sur une Ubuntu toute fraiche et ça marche sans problème. (pour ce bout de code, pas besoin de SDL_image bien évidemment).
                • Partager sur Facebook
                • Partager sur Twitter
                  14 juin 2006 à 16:47:23

                  Citation : Kayl



                  J'ai personnellement essayé le premier bout de code du cours :

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

                  int main(int argc, char *argv[])
                  {
                      SDL_Init(SDL_INIT_VIDEO);
                      SDL_WM_SetCaption("Un joli \"carré\"",NULL);
                      SDL_SetVideoMode(640, 480, 32, SDL_OPENGL);

                      bool continuer = true;
                      SDL_Event event;

                      while (continuer)
                      {
                          SDL_WaitEvent(&event);
                          switch(event.type)
                          {
                              case SDL_QUIT:
                                  continuer = false;
                          }

                           glClear(GL_COLOR_BUFFER_BIT);

                          glBegin(GL_QUADS);
                              glColor3ub(0,0,255);
                              glVertex2d(-0.75,-0.75);
                              glVertex2d(-0.75,0.75);
                              glColor3ub(255,0,0);
                              glVertex2d(0.75,0.75);
                              glVertex2d(0.75,-0.75);
                          glEnd();

                          glFlush();
                          SDL_GL_SwapBuffers();
                      }

                      SDL_Quit();

                      return 0;
                  }



                  sur une Ubuntu toute fraiche et ça marche sans problème. (pour ce bout de code, pas besoin de SDL_image bien évidemment).



                  Ce n'est pas exactement le même code que dans ton cours :-°

                  (EDIT: Ah mais c'est normal qu'il soit pas tout à fait pareil, moi j'essaie le petit triangle tout coloré :-° )

                  Ok je vais essayer, merci beaucoup.

                  et les fichiers opengl.a et .so je les ai toujours pas, c'est grave doc ? xD
                  • Partager sur Facebook
                  • Partager sur Twitter
                    14 juin 2006 à 18:24:17

                    Le cours : gcc Linux -lGLU -lGL -lXmu -lX11
                    Mes tests ont montré que Xmu et X11 étaient inutiles, ils étaient notés * A confirmer de toute façon.

                    -lprout veut dire linker avec libprout.a
                    je vois donc pas pourquoi tu cherches opengl.a.
                    -lGLU link avec libGLU.a.

                    Voilà libGL.so et libGLU.so (et libGLU.a, je trouve pas encore libGL.a)


                    kayl@kaylbuntu:/usr/lib$ ls | grep GL
                    libGL.so
                    libGL.so.1
                    libGL.so.1.2
                    libGLU.a
                    libGLU.so
                    libGLU.so.1
                    libGLU.so.1.3.060401
                    • Partager sur Facebook
                    • Partager sur Twitter
                      14 juin 2006 à 18:43:53

                      En effet moi ça a été fait tout seul (à l'installe d'ubuntu je pense) :

                      kayl@kaylbuntu:/var/cache/apt/archives$ ls | grep gl
                      libgl1-mesa-dev_6.4.1-0ubuntu8_i386.deb
                      libglib2.0-0_2.10.3-0ubuntu1_i386.deb
                      libglib2.0-data_2.10.3-0ubuntu1_all.deb
                      libglib2.0-dev_2.10.3-0ubuntu1_i386.deb
                      libglu1-mesa-dev_6.4.1-0ubuntu8_i386.deb

                      kayl@kaylbuntu:/var/cache/apt/archives$ dpkg -c libglu1-mesa-dev_6.4.1-0ubuntu8_i386.deb
                      drwxr-xr-x root/root 0 2006-05-05 17:05:58 ./
                      drwxr-xr-x root/root 0 2006-05-05 17:05:54 ./usr/
                      drwxr-xr-x root/root 0 2006-05-05 17:05:56 ./usr/lib/
                      -rw-r--r-- root/root 665418 2006-05-05 17:05:56 ./usr/lib/libGLU.a
                      drwxr-xr-x root/root 0 2006-05-05 17:05:53 ./usr/include/
                      drwxr-xr-x root/root 0 2006-05-05 17:05:53 ./usr/include/GL/
                      -rw-r--r-- root/root 16668 2004-02-06 02:17:30 ./usr/include/GL/glu.h
                      -rw-r--r-- root/root 3315 2003-10-11 00:09:05 ./usr/include/GL/glu_mangle.h
                      drwxr-xr-x root/root 0 2006-05-05 17:05:54 ./usr/share/
                      drwxr-xr-x root/root 0 2006-05-05 17:05:54 ./usr/share/doc/
                      drwxr-xr-x root/root 0 2006-05-05 17:05:56 ./usr/share/doc/libglu1-mesa-dev/
                      -rw-r--r-- root/root 21784 2005-11-30 02:12:47 ./usr/share/doc/libglu1-mesa-dev/changelog.gz
                      -rw-r--r-- root/root 4847 2006-05-05 16:42:37 ./usr/share/doc/libglu1-mesa-dev/copyright
                      -rw-r--r-- root/root 9277 2006-05-05 16:42:37 ./usr/share/doc/libglu1-mesa-dev/changelog.Debian.gz
                      lrwxrwxrwx root/root 0 2006-05-05 17:05:53 ./usr/lib/libGLU.so -> libGLU.so.1


                      Et en virant -lGL ça marche (car il y a pas de libGL.a sur mon système en tout cas).
                      Si je vires -lGLU alors je vois des erreurs sur les fonctions de GL apparaitre. Va savoir pourquoi le libGLU.a ne contient pas que des choses GLU, quelqu'un en connait la raison historique ?

                      En tout cas ne cherche pas opengl.a et opengl.so apparemment c'est juste libGLU.a (commun à GL et GLU) et libGL.so et libGLU.so.
                      • Partager sur Facebook
                      • Partager sur Twitter
                        14 juin 2006 à 19:07:50

                        Il y a bien un libGL.a il me semble, même s'il peut avoir un autre nom... Je vais pas rebooter pour ça, désolé (et j'ai pas vmware).

                        Kayl > plutôt que le ls /var/cache/apt/archives, qui donne la liste des paquets téléchargés, t'avais dpkg -l, qui te donne la liste des packages installés.

                        Essaye de voir avec -lmesa ou autre... Enfin il me semblait bien utiliser -lGL quand même :euh:
                        • Partager sur Facebook
                        • Partager sur Twitter
                          14 juin 2006 à 19:12:21

                          Moi aussi remram44 avant j'utilisai -lGL mais je n'avais jamais essayé (jusqu'à aujourd'hui) de le virer (et donc laisser uniquement -lGLU).

                          Noté pour le coup de dplk -l. J'étais dans /var/cache/apt/archives juste parce que je cherchais qui était responsable de la présence des trucs GL sur mon ubuntu toute fraiche et le coup du locate a été mon premier outil :)
                          • Partager sur Facebook
                          • Partager sur Twitter
                            19 juin 2006 à 18:28:18

                            Salut !

                            En faite c'était un problème tout con : le lien de /usr/lib/libGL.so était mort. Depuis que je l'ai refait, tout marche nickel :)


                            Donc, merci deaucoup mais ce n'était pas un vrai problème en fait :)

                            A++ !
                            • Partager sur Facebook
                            • Partager sur Twitter

                            OpenGL : Fenetre vide.

                            × 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