IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Caml Discussion :

LablGlGtk : Segmentation fault


Sujet :

Caml

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 19
    Points : 13
    Points
    13
    Par défaut LablGlGtk : Segmentation fault
    Bonjour,

    J'essaye actuellement d'utiliser LablGlGtk pour un projet. J'ai donc essayé de compiler les exemples fournis sur ma distrib' (Fedora 14).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    open GMain
     
    let main () =
      let w = GWindow.window ~title:"LablGL/Gtk" () in
      w#connect#destroy ~callback:Main.quit;
      let area =
        GlGtk.area [`RGBA;`DEPTH_SIZE 1;`DOUBLEBUFFER]
          ~width:500 ~height:500 ~packing:w#add () in
      area#connect#realize ~callback:
        begin fun () ->
          GlMat.mode `projection;
          GlMat.load_identity ();
          GlMat.ortho ~x:(-1.0,1.0) ~y:(-1.0,1.0) ~z:(-1.0,1.0);
        end;
      area#connect#display ~callback:
        begin fun () ->
          GlClear.color (0.0, 0.0, 0.0);
          GlClear.clear [`color];
          GlDraw.color (1.0, 1.0, 1.0);
          GlDraw.begins `polygon;
          GlDraw.vertex ~x:(-0.5) ~y:(-0.5) ();
          GlDraw.vertex ~x:(-0.5) ~y:(0.5) ();
          GlDraw.vertex ~x:(0.5) ~y:(0.5) ();
          GlDraw.vertex ~x:(0.5) ~y:(-0.5) ();
          GlDraw.ends ();
          Gl.flush ();
          area#swap_buffers ()
        end;
      Timeout.add ~ms:10000 ~callback:(fun () -> w#destroy ();false);
      w#show ();
      Main.main ()
     
    let _ = main ()
    La compilation se passe correctement, par contre lorsque j'exécute le programme il y a une erreur de segmentation.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    (process:14205): GLib-GObject-WARNING **: invalid (NULL) pointer instance
     
    (process:14205): GLib-GObject-CRITICAL **: g_signal_connect_data: assertion `G_TYPE_CHECK_INSTANCE (instance)' failed
    Erreur de segmentation (core dumped)
    J'ai tout de même essayé de faire mon programme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    (* 
    ***
    Création de la fenêtre
    ***
    Création de différents conteneur
    *)
    (* GlGtk *)
    let area = GlGtk.area [ `RGBA; `DOUBLEBUFFER] 
      ~width:500 
      ~height:400
      ~packing:vbox2#add ()
     
    (* Fonction appelée lorsque l'utilisateur appui sur un bouton *) 
    (* Les fonctions utilisant OpenGl sont dans un module nommé Troisd *)
    let goto3D = 
    begin
        Troisd.init_gl();
        area#connect#display ~callback:(fun () ->Troisd.draw_cb(); area#swap_buffers ());
        GMain.Timeout.add ~ms:20 ~callback:(fun () ->Troisd.draw_cb(); area#swap_buffers () ; true);
    end
    Et la encore j'ai une erreur de segmentation qui vient de la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    GMain.Timeout.add ~ms:20 ~callback:(fun () ->Troisd.draw_cb(); area#swap_buffers () ; true);
    Je compile en natif.

    Une idée ?

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 24
    Points : 11
    Points
    11
    Par défaut
    Bonjour,

    Essaye avec area#make_current ();avant de donner des informations et instructions au widget GLGTK.

    exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    let refresh_3d() =
    begin
    area#make_current ();
    Moteur3D.draw_cb();
    area#swap_buffers();
    end
    Ces exemples sont assez vieux.
    Bonne continuation

Discussions similaires

  1. Pb segmentation fault avec glutinit()
    Par pipistrelle dans le forum GLUT
    Réponses: 2
    Dernier message: 17/11/2004, 23h17
  2. [SDL_Image] Img_Load : segmentation fault ....
    Par Mathieu.J dans le forum OpenGL
    Réponses: 6
    Dernier message: 19/10/2004, 23h52
  3. [REDHAT] Segmentation fault systematique
    Par mela dans le forum RedHat / CentOS / Fedora
    Réponses: 2
    Dernier message: 21/09/2004, 06h05
  4. Réponses: 13
    Dernier message: 13/07/2004, 15h41
  5. Comment contrer la "segmentation fault" ?
    Par guillaume_pfr dans le forum C
    Réponses: 15
    Dernier message: 08/08/2003, 13h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo