C’est une discussion qui revient régulièrement sur le chat de Developpez.com. Une personne demande comment fait-on pour accéder aux variables membres privées d’une classe et on lui répond de créer des getter et setter. Viens alors un C++ien moyen (c’est-à -dire un casse-pied, en général moi) qui hurle au scandale et sort l’adage bien connu : « les accesseurs, c’est le mal ». S’en suit une discussion sur pourquoi les accesseurs sont à éviter, quand j’ai le temps et l’humeur.
Dans cet article, je vais présenter les problèmes que posent les accesseurs concernant l’exposition des détails d’implémentation.
Lire la suite
Archives de l’auteur : gbdivers
OpenGL dans Qt5
Le support d’OpenGL dans Qt5 a été modifié pour mieux l’intégrer avec les nouveaux modules de Qt : QtQuick2 et Qt3D. Cet article présente les modifications apportées dans Qt5.
Lire la suite
Les signaux et slots dans Qt5
La nouvelle version de Qt vient de sortir en version 5 alpha. Cette version améliore la prise en charge de la nouvelle norme du C++, le C++11, et modifie ainsi le fonctionnement des signaux et slots de Qt. Cet article fait un rappel sur l’utilisation des signaux et slots et présente les nouvelles fonctionnalités offertes par Qt5.
Lire la suite
Introduction aux geometry shaders
A la demande de LittleWhite, mon premier bloc technique est consacré à l’utilisation des geometry shader. Il n’y a rien de tres compliqué donc je présente un exemple simple apres quelques rappels. Pour ceux qui ne connaissent pas du tout les geometry shaders, je ferais un article plus detaille sur ce sujet.
Pour faire au plus simple, j’utilise Qt et en particulier QShaderProgram, qui gère les geometry shaders depuis Qt 4.7.
Lire la suite
La technique d’instanciation
L’instanciation est une technique permettant de dessiner plusieurs copies du même objet. Cette technique sera intéressante dans des scènes contenant des objets similaires : une forêt d’arbre, le feuillage d’un arbre, une foule, l’herbe d’une pelouse.
Lire la suite
Les queries objects
Les queries objects permettent d’interroger OpenGL pour obtenir des informations à propos des traitements effectués. Par exemple, les queries objects permetttent de récupérer les nombres d’instances/primitives restant après un occlusion culling dans un geometry shader. On utilise également des tableaux de queries objects pour tester chaque rendu et la technique de conditional rendering pour faire les tests de culling directement sur le GPU.
Lire la suite
Livres, ressources en ligne et blogs
Voici la liste des ressources qui me serviront de base de travail. Si vous avez des suggestions (un livre, un blog ou même des techniques particulières), tout m’intéresse.
Lire la suite
Ouverture du blog
Bienvenue sur ce blog consacré à la programmation des GPU
Pourquoi ce blog ?
J’ai commencé il y a maintenant plus d’un an la rédaction d’un tutoriel sur la programmation des processeurs graphiques (La 3D avec le module OpenGL de Qt, avec Rémi Achard, mon stagiaire de l’époque). L’idée de cet article est venue du constat que la plupart des ressources sur la programmation 3D en français utilisent des méthodes dépréciées. Ce tutoriel présente donc les bases de programmation 3D moderne, en s’affranchissant de l’approche « historique » (comme par exemple le pipeline fixe ou le mode directe).
La rédaction de ce genre d’article est très épuisante et un peu frustrante. Épuisante, car cela prend du temps à se documenter, à écrire, à coder des exemples simples et pédagogiques… et tout recommencer plusieurs fois. Frustrant parce que ce tutoriel n’aborde, pour le moment, que des techniques destinées aux débutant. Quand la principale motivation est de s’amuser à découvrir des techniques avancées (et donc complexes), la rédaction de ce genre d’article n’apporte pas assez de satisfactions personnelles. La conséquence de cela est que la rédaction traîne un peu depuis quelques temps. Beaucoup même.
Le but de ce blog est donc avant tout de m’amuser avec les gpu, d’expérimenter des techniques avancées, de faire des tests, d’échanger sur ces techniques, etc.
Alors, tu laisses tomber l’article principal ?
Non. Le tutoriel va continuer à évoluer de son côté. Deux chantiers sont en cours : la réorganisation en plusieurs petits tutoriels et la fin de la rédaction de la partie sur OpenCL. Le découpage de l’article devrait le rendre plus abordable pour les débutants et faciliter la mise à jour.
Le blog et les articles ne s’adressent pas au mêmes personnes. Le premier est un lieu d’expérimentation et d’échange technique. Il intéressera donc les développeurs plus expérimentés (j’espère). L’article est beaucoup plus pédagogiques et synthétiques. Il est destiné aux débutants.
Que va-t-on trouver dans ce blog ?
La thématique principale sera la programmation de gpu au sens large (3D, GPU computing), les thèmes annexes seront plus variés (c++, opengl, opencl, cuda, architecture des gpu, 3d, Qt, moteurs 3D, moteurs de jeux, etc.) Il n’y a pas vraiment de limites bien définies. Les sujets abordés dépendront de mes envies, de mes lectures, des questions sur le forum ou de suggestions que l’on pourra me faire.
Je publierai deux types d’articles : les articles techniques, orientés vers une technique spécifique et ses différentes applications (par exemple la tesselation ou le feedback), et les articles applicatifs, orienté vers une application (par exemple comment afficher des arbres ou un personnage réaliste) en utilisant les différentes approches possibles.
J’essaierai de publier 1 ou 2 articles par mois. Les premiers articles sont déjà rédigés (un sur les geometry shaders, à la demande de LittleWhite, et un sur l’ambient occlusion).
A bientôt