Bonjour,
J'essaye actuellement d'utiliser LablGlGtk pour un projet. J'ai donc essayé de compiler les exemples fournis sur ma distrib' (Fedora 14).
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
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 ()
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 (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)
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
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
Je compile en natif.
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);
Une idée ?
Partager