
Une primitive est une forme géométrique simple, allant du point au
polygone. Le type de primitive le plus utilisé est le triangle ainsi
que ses dérivés : le triangle fan et - surtout - le triangle strip.
Les vertices permettent de former ces formes géométriques. Ainsi, dans
le cas d'une primitive de type point, un seul vertex correspondra à une
seule primitive. Dans le cas d'un triangle, il en faudra trois pour
former la primitive. Il existe quelques types de primitives et les plus
utilisées sont :
- point
- ligne
- triangle
- triangle fan
- triangle strip
Les points
Pendant longtemps, les points étaient une primitive quasiment
inutilisée, excepté dans les logiciels de conception assistée par
ordinateur. Dans les jeux, cependant, des billboards étaient
généralement utilisés à leur place pour créer des effets de particule.
Un billboard est un simple carré qui a la particularité d'être aligné
par rapport à la caméra de façon à toujours lui faire face.
Les point sprites
Mais depuis maintenant quelques générations de GPU, il existe des
primitives nommées point sprites. Celles-ci fonctionnent exactement
comme les points, sauf que le GPU va créer lui-même le billboard.
Ainsi, au lieu de fournir 4 vertices à la carte pour un carré, un seul
sera fourni pour chaque point, ce qui améliore grandement les
performances et permet ainsi d'afficher plus de particules.
Les lignes
Les lignes sont utilisées en tant que telles. Il s'agit en fait
d'une primitive assez simple, qui nécessite deux vertices. Elle
possèdera cependant les mêmes propriétés qu'un triangle : une texture,
une couleur, etc. A noter que pour afficher en mode "fil de fer", il ne
faut pas modifier tout le système d'affichage pour utiliser des lignes
: la carte graphique est capable de créer les lignes a partir de toutes
les autres primitives.
Le triangle strip

Les triangle strips sont généralement utilisés à la place des
triangles, puisque les performances sont meilleures lors de leur
utilisation. En effet, pour un triangle, il faut trois vertices. Pour
deux triangles, six vertices, etc. Le nombre de vertices est donc égal
au nombre de primitives multiplié par trois. Les triangle strips, quant
à eux, utilisent les trois premiers vertices pour le premier triangle,
et ensuite un seul vertex supplémentaire pour les triangles suivants. A
chaque fois, les trois derniers vertices sont utilisés pour définir le
triangle. Le nombre de vertices est donc égal au nombre de primitives +
deux.
L'avantage est donc très net : pour 150 000 triangles, en utilisant des
primitives de type triangle, il faudrait 450 000 vertices. En utilisant
un triangle strip, il n'en faudrait que 150 002. Un tiers de données à
transférer, plutôt pas mal comme optimisation.
Le triangle fan
Le second type de primitive dérivé du triangle, le triangle fan, est
proche du triangle strip. Au lieu d'utiliser les trois derniers
vertices pour créer chaque primitive, ce sont les deux derniers
vertices ainsi que le premier qui sont utilisés. Moins souvent utilisés
que les triangle strips, les triangles fans permettent néanmoins de
facilement créer des cercles, halos de lumière, etc. Au niveau des
performances, ils sont similaires aux triangle strips.
Les tampons d'indexation
Une dernière technique très utile afin de diminuer la quantité de
données à envoyer à la carte graphique est l'utilisation d'un index.
Ainsi, dans une forme complexe (le modèle du héros d'un jeu, par
exemple), il arrive souvent qu'un même point soit utilisé par plusieurs
primitives, et le vertex s'en retrouve ainsi dupliqué. L'utilisation
des index permet de se passer de ces copies en disant à la carte
graphique quel vertex utiliser via un numéro, en quelque sorte.
L'avantage étant que là où un vertex fait très vite 32 voire 64 octets,
un index ne fait que 2 ou 4 octets.