OpenGL
Le Pipeline de rendu
Le pipeline de rendu
L'API OpenGL utilise deux types de primitives :
- Les primitives géométriques (ou Vertex): Les points, les lignes, les triangles...
- Les pixels: Les textures, les images...
Pour générer une image à partir de ces primitives, OpenGL utilise une architecture en Pipeline :
![]() |
Depuis la réception des données (vertex ou pixels) jusqu'au buffer d'affichage :
- Vertex Data / Pixel Data: Les données géométriques et les images que nous souhaitons "dessiner" sur le contexte. Les premières opérations se font sur ces données.
- Display List: Les Display List permettent de "compiler" un ensemble de fonctions OpenGL et de données. Cela a pour but d'améliorer les performances des applications, et limiter les appels systèmes coûteuses.
- Vertex operation: Des opérations et des transformations sont appliquées sur les données géométriques en utilisant la matrice de modèle (plus de détails dans la partie "Transformations"). Certains effets, dont les lumières sont aussi appliqués sur ces vertex (s'ils sont utilisés).
- Primitive assembly: Suite de la première opération, les vertex sont transformés à nouveau par la matrice de projection, afin de produire un repère en 2D pour la fenêtre d'affichage. Ces transformations génèrent une suite de primitives géométriques simples (points, lignes, ou triangles).
- Pixel transfer operation: Après que tous les pixels soient chargés, ils subissent des opérations de transformation d'images. Ces données seront stockées dans la Texture memory, avant d'être utilisé avec les formes géométriques (comme une texture).
- Rasterization: L'objectif de la Rasterization est de convertir toutes les primitives géométriques et toutes les images en fragment : Un ensemble d'informations sous la forme d'un tableau (couleur, profondeur, taille...). Ces fragments seront utilisés pour calculer l'affichage des pixels de couleurs (finaux) sur l'écran.
- Fragment operation: Cette dernière partie est composée de 2 étapes. Dans un premier temps, nous générons un Texel (qui est une texture) depuis une image stockée dans la Texture memory, avant de l'appliquer sur les fragments. Dans un second et dernier temps, les fragments sont traités et calculés, pour produire un pixel de couleur. L'ensemble de ces pixels sont stockées dans la Frame buffer (ou le buffer d'affichage) avant la génération d'un rendu à l'écran.