Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.
qt_opengl_-_utilisation_du_pipeline_programmable [2014/03/10 19:34] gbdivers créée |
qt_opengl_-_utilisation_du_pipeline_programmable [2014/12/11 17:18] (Version actuelle) gbdivers |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
====== Qt OpenGL - Utilisation du pipeline programmable ====== | ====== Qt OpenGL - Utilisation du pipeline programmable ====== | ||
+ | |||
+ | **Sommaire** | ||
+ | |||
+ | * [[qt_opengl_-_introduction|]] | ||
+ | * [[opengl_dans_qt5|]] | ||
+ | * [[qt_opengl_-_generer_un_terrain|]] | ||
+ | * [[qt_opengl_-_envoyer_des_donnees_au_processeur_graphique|]] | ||
+ | * [[qt_opengl_-_utilisation_du_pipeline_programmable|]] | ||
+ | * [[qt_opengl_-_ajouter_des_lumieres_et_des_textures|]] | ||
+ | * [[qt_opengl_-_realiser_un_rendu_offscreen|]] | ||
+ | * [[qt_opengl_-_overpainting|]] | ||
+ | * [[qt_opengl_-_gestion_des_extensions|]] | ||
+ | * [[qt_opengl_-_annexes|]] | ||
Ce chapitre présente l'utilisation du pipeline programmable et des shaders avec OpenGL et Qt. Le lecteur intéressé par les détails se reportera au tutoriel de LittleWhite. Les codes sources peuvent être téléchargés dans le fichier zip. | Ce chapitre présente l'utilisation du pipeline programmable et des shaders avec OpenGL et Qt. Le lecteur intéressé par les détails se reportera au tutoriel de LittleWhite. Les codes sources peuvent être téléchargés dans le fichier zip. | ||
Ligne 87: | Ligne 100: | ||
En plus du mot-clé définissant si une variable est un paramètre d'entrée ou de sortie, il faut également indiquer le type de variable. En plus des types hérités du C (int, float, etc.), le langage GLSL fournit plusieurs autres types facilitant le calcul 3D. Par exemple, le type vec4 représente un vecteur composé de quatre composantes et le type mat4 définit une matrice de 4x4. Il est courant de manipuler les coordonnées 3D avec quatre composantes au lieu de trois. La raison provient du fait que l'ensemble des transformations possibles en 3D (c'est-à-dire trois rotations et une translation) ne peuvent être représentées que par une matrice 4x4. Puisqu'il n'est possible de multiplier une matrice 4x4 que par un vecteur de dimension 4 et que l'on préfère en général ne manipuler qu'un seul type de vecteur, on se limite habituellement aux vecteurs de dimension 4. Voir la FAQ Mathématiques pour les jeux pour plus de détails. | En plus du mot-clé définissant si une variable est un paramètre d'entrée ou de sortie, il faut également indiquer le type de variable. En plus des types hérités du C (int, float, etc.), le langage GLSL fournit plusieurs autres types facilitant le calcul 3D. Par exemple, le type vec4 représente un vecteur composé de quatre composantes et le type mat4 définit une matrice de 4x4. Il est courant de manipuler les coordonnées 3D avec quatre composantes au lieu de trois. La raison provient du fait que l'ensemble des transformations possibles en 3D (c'est-à-dire trois rotations et une translation) ne peuvent être représentées que par une matrice 4x4. Puisqu'il n'est possible de multiplier une matrice 4x4 que par un vecteur de dimension 4 et que l'on préfère en général ne manipuler qu'un seul type de vecteur, on se limite habituellement aux vecteurs de dimension 4. Voir la FAQ Mathématiques pour les jeux pour plus de détails. | ||
- | <code cpp-qt> | + | <code glsl> |
// Dans vertex_shader.gl | // Dans vertex_shader.gl | ||
Ligne 101: | Ligne 114: | ||
Le Fragment Shader est appelé ensuite dans le pipeline pour chaque pixel apparaissant à l'écran. Il permet de modifier la couleur de chaque pixel dynamiquement, technique très utilisée entre autres pour l'éclairage. Le Fragment Shader présenté applique une couleur fixe (spécifiée dans la variable fixed_color) à chaque pixel. Nous verrons plus tard comment transmettre cette variable depuis notre application au shader. La couleur finale du pixel est transmise aux étapes suivantes du Pipeline 3D dans une variable de type vec4 (représentant une couleur en RGBA : rouge, vert, bleu et transparence). | Le Fragment Shader est appelé ensuite dans le pipeline pour chaque pixel apparaissant à l'écran. Il permet de modifier la couleur de chaque pixel dynamiquement, technique très utilisée entre autres pour l'éclairage. Le Fragment Shader présenté applique une couleur fixe (spécifiée dans la variable fixed_color) à chaque pixel. Nous verrons plus tard comment transmettre cette variable depuis notre application au shader. La couleur finale du pixel est transmise aux étapes suivantes du Pipeline 3D dans une variable de type vec4 (représentant une couleur en RGBA : rouge, vert, bleu et transparence). | ||
- | <code cpp-qt> | + | <code glsl> |
// Dans fragment_shader.gl | // Dans fragment_shader.gl | ||