lundi 13 février 2017

Tentative d'intégration de Vulkan dans la bibliothèque gtkmm - Partie 1

Salutations,

Ainsi que vous l'avez sans doute remarqué, je suis en train d'étudier le fonctionnement de Vulkan. Etant un utilisateur de l'environnement GNU/Linux et de la plupart des logiciels GNU, quoi de plus normal que de vouloir intégrer ce nouveau système graphique à l'un des plus populaire gestionnaire de fenêtre de ce système d'exploitation, nommé GNOME. Je suis certain que d'autres y ont pensé, mais cela me semble être un défi plus qu'intéressent.


GNOME, c'est le gestionnaire de fenêtre, qui, lui, utilise également différentes librairies:

  • GDK (Gnome Development Kit) : Ça dit bien ce que cela veut dire
  • GTK (Gimp Tool Kit): Oui, c'est Gimp, pas GNU, et encore moins Gnome. C'est pour une raison historique. En effet, c'est le programme de dessin/retouche de photo, qui est à la base de la librairie.
  • Glib : C'est entre autre là que l'on va avoir la gestion des événements de Gnome.
  • Etc…
Dans la bibliothèque GTK, depuis la version 3.18, il existe les classes Gtk::GLArea et Gtk::GLContext. J'aimerais bien écrire l'équivalent pour la bibliothèque Vulkan. Je sais que c'est un peu prétentieux de ma part, mais cela constitue un très bon point de départ pour une étude assez poussée. J'ai passé assez de temps à étudier dernièrement pour être en mesure de comprendre de quoi on parle dans ce nouveau domaine. Auparavant, j'ai appris pas mal de chose sur opengl mais aussi sur la programmation en temps réel grâce à l'audio ainsi que les réseaux de neurones artificiels. Autant de sujets différents qui permettent d'aborder Vulkan avec un certain recul, bien nécessaire, j'en ai bien peur.

Pour commencer, je vais créer une fenêtre qui va ressembler à ceci:

Fenêtre créée avec gtkmm.

Jusque là, rien de bien extraordinaire!

Cette fenêtre est une Gtk::ApplicationWindow que j'ai simplement hérité, et dans laquelle j'ai ajouté un widget nommé VulkanWidget, lui même hérité de Widget.

Pourquoi VulkanWidget et pas Gtk::VkArea?

Je crois que cela aurait été encore plus prétentieux de donner directement un nom pareil à ma classe. Avant d'en arriver là, je vais quand même faire mon travail de recherche, de test, de programmation, et surtout, de présentation de l'évolution de mes travaux sur ce blog. Sinon, où serait l’intérêt de tout ce boulot?

Ce qui est bien, pour vous, c'est que, parallèlement, je suis en train d'écrire un tutoriel qui explique comment faire pour en arriver là où je suis.

La prochaine étape consistera à initialiser une session Vulkan de base directement dans mon VulkanWidget, pour ensuite créer la classe VulkanInitializer, ce qui est plus logique puisque un même programme pourrait avoir envie d'avoir plusieurs vues sur un même monde.

En attendant la suite, j'espère que cette petite lecture vous a été agréable, et que, comme moi, vous êtes impatient de voir la suite sur ce blog.

À bientôt.

Ali Bébert.

Aucun commentaire:

Enregistrer un commentaire

N'hésitez pas à laisser un commentaire, de plus les Backlink sont activés ;)