Utilisation des Vertex Traits – décrire ses sommets en une seule fois

Un « vertex traits » sert à décrire un format de sommet une seule fois, en C++, et à laisser le compilateur en déduire le reste. Sans lui, le même vertex est décrit à trois endroits qui doivent rester synchronisés à la main.

Prenons un sommet classique avec position, normale et coordonnées de texture :

Il existe trois définitions d’une structure élémentaire GPU. Dans le programme : A moitié dans le programme, à moitié dans le GPU : Et au final dans le GPU, défini dans un fichier d’effet shader : Si ces trois déclarations divergent : le comportement sera non désirable. Bug d’affichage, problèmes de compilation ou crash applicatif.




Rappel : c’est quoi, un trait ? Un trait est une structure template qui associe des informations à un type, sans modifier ce type. On interroge le trait avec le type en paramètre, et il répond à la compilation.

Première version : spécialiser à la main