GTK et OpenGL
Par 
  défaut, GTK ne propose pas de widget OpenGL. Mais pour palier ce manque, un 
  généreux développeur nommé Janne 
  Löf a créé GTKGLArea, qui propose un nouveau widget dérivé de GtkDrawingArea 
  permettant d’insérer des fenêtres OpenGL dans vos interfaces GTK. Vous trouverez 
  GTKGLArea à l’adresse indiquée en référence [9]. Notez que vous aurez besoin 
  de GTK en version 1.2 minimum.
A l'attaque
Pour 
  illustrer ce didacticiel, je vous propose de créer une application GTK toute 
  simple affichant un cube en 3D (figure 1). Je sais, je vous avais promis il 
  y a quelques temps de ne plus vous reparler de cube. Si je reviens sur ma promesse, 
  c’est tout simplement pour garder un code source concis et ne pas avoir à utiliser 
  les primitives géométriques standard de Glut. Comme d’habitude, vous pourrez 
  faire tourner le cube avec la souris (bouton gauche) et zoomer (bouton droit). 
  Pour le changement du mode d’affichage, nous utiliserons des boutons GTK en 
  lieu et place de nos habituels raccourcis clavier. 
Si 
  vous jetez un coup d’œil au code source de  
  notre programme, vous vous rendrez compte  
  que l’architecture globale est finalement peu différente de ce que nous 
  avions avec glut. On se retrouve avec un système événementiel où un certain 
  nombre de fonctions de rappel sont associées aux différents événements pouvant 
  survenir (création de la fenêtre, clic de souris, appui sur un bouton…).
Initialisation 
La 
  phase d’initialisation d’OpenGL permet, je vous le rappelle, de définir les 
  paramètres de base nécessaires au bon fonctionnement de l’application OpenGL : 
  paramètres de perspective, d’éclairage, de couleur… Lorsque nous utilisions 
  Glut, nous avions l’habitude d’appeler depuis la fonction main() une procédure 
  InitOpenGL(). Avec GTKGLArea, il va falloir agir différemment. La raison est 
  simple : pour initialiser OpenGL, il est nécessaire de disposer d’une fenêtre 
  (au sens X-Window du terme) à laquelle sera attaché le contexte OpenGL. Dans 
  le cas de Glut, cette fenêtre est créée avant l’appel à InitOpenGL par la fonction 
  glutCreateWindow(). Mais avec GTK, la fenêtre n’est effectivement créée que 
  lors de l’appel à gtk_widget_show().
La 
  solution pour remédier à ce problème est simple : il suffit d’attacher 
  la fonction d’initialisation d’OpenGL au signal ‘realize’ qui sera émis lors 
  de la création de la fenêtre.