@@ -11,7 +11,7 @@ synchroniser la présentation avec le rafraîchissement de l'écran.
1111Toutes les cartes graphiques ne sont pas capables de présenter directement les images à l'écran, et ce pour
1212différentes raisons. Ce pourrait être car elles sont destinées à être utilisées dans un serveur et n'ont aucune
1313sortie vidéo. De plus, dans la mesure où la présentation est très dépendante du gestionnaire de fenêtres et de la
14- surface, la swap chain ne fait pas partie de Vulkan "core". Il faudra donc utiliser des extensions, dont
14+ surface, la swap chain ne fait pas partie de Vulkan "core". Il faudra donc utiliser des extensions, dont
1515` VK_KHR_swapchain ` .
1616
1717Pour cela nous allons modifier ` isDeviceSuitable ` pour qu'elle vérifie si cette extension est supportée. Nous avons
@@ -144,7 +144,7 @@ if (formatCount != 0) {
144144}
145145```
146146
147- Finalement, récupérer les modes de présentation supportés suit le même principe et utilise
147+ Finalement, récupérer les modes de présentation supportés suit le même principe et utilise
148148` vkGetPhysicalDeviceSurfacePresentModesKHR ` :
149149
150150``` c++
@@ -191,7 +191,7 @@ nous rabattrons sur ce qui nous restera de mieux.
191191
192192### Format de la surface
193193
194- La fonction utilisée pour déterminer ce paramètre commence ainsi. Nous lui passerons en argument le membre donnée
194+ La fonction utilisée pour déterminer ce paramètre commence ainsi. Nous lui passerons en argument le membre donnée
195195` formats ` de la structure ` SwapChainSupportDetails ` .
196196
197197``` c++
@@ -206,7 +206,7 @@ nous stockons les canaux de couleur R, G, B et A dans cet ordre et en entiers no
206206de vérifier que le sRGB est supporté en utilisant le champ de bits `VK_COLOR_SPACE_SRGB_NONLINEAR_KHR`.
207207
208208Pour l'espace de couleur nous utiliserons sRGB si possible, car il en résulte
209- [un rendu plus réaliste](http://stackoverflow.com/questions/12524623/). Le format le plus commun est
209+ [un rendu plus réaliste](http://stackoverflow.com/questions/12524623/). Le format le plus commun est
210210`VK_FORMAT_B8G8R8A8_SRGB`.
211211
212212Itérons dans la liste et voyons si le meilleur est disponible :
@@ -296,6 +296,11 @@ grande valeur d'un `uint32_t`. Dans ce cas nous choisirons la résolution corres
296296fenêtre, dans les bornes de ` minImageExtent ` et ` maxImageExtent ` .
297297
298298``` c++
299+ #include < cstdint> // UINT32_MAX
300+ #include < algorithm> // std::min/std::max
301+
302+ ...
303+
299304VkExtent2D chooseSwapExtent (const VkSurfaceCapabilitiesKHR& capabilities) {
300305 if (capabilities.currentExtent.width != UINT32_MAX) {
301306 return capabilities.currentExtent;
@@ -311,7 +316,7 @@ VkExtent2D chooseSwapExtent(const VkSurfaceCapabilitiesKHR& capabilities) {
311316```
312317
313318Les fonctions `min` et `max` sont utilisées ici pour limiter les valeurs `WIDTH` et `HEIGHT` entre le minimum et le
314- maximum supportés par l'implémentation. Incluez `<algorithm>` pour les utiliser.
319+ maximum supportés par l'implémentation.
315320
316321## Création de la swap chain
317322
@@ -389,7 +394,7 @@ Le membre `imageArrayLayers` indique le nombre de couches que chaque image poss
389394développez une application stéréoscopique 3D. Le champ de bits ` imageUsage ` spécifie le type d'opérations que nous
390395appliquerons aux images de la swap chain. Dans ce tutoriel nous effectuerons un rendu directement sur les images,
391396nous les utiliserons donc comme * color attachement* . Vous voudrez peut-être travailler sur une image séparée pour
392- pouvoir appliquer des effets en post-processing. Dans ce cas vous devrez utiliser une valeur comme
397+ pouvoir appliquer des effets en post-processing. Dans ce cas vous devrez utiliser une valeur comme
393398` VK_IMAGE_USAGE_TRANSFER_DST_BIT ` à la place et utiliser une opération de transfert de mémoire pour placer le
394399résultat final dans une image de la swap chain.
395400
@@ -473,7 +478,7 @@ if (vkCreateSwapchainKHR(device, &createInfo, nullptr, &swapChain) != VK_SUCCESS
473478```
474479
475480Les paramètres sont le logical device, la structure contenant les informations, l'allocateur optionnel et la variable
476- contenant la référence à la swap chain. Cet objet devra être explicitement détruit à l'aide de la fonction
481+ contenant la référence à la swap chain. Cet objet devra être explicitement détruit à l'aide de la fonction
477482` vkDestroySwapchainKHR ` avant de détruire le logical device :
478483
479484``` c++
@@ -505,7 +510,7 @@ std::vector<VkImage> swapChainImages;
505510Ces images ont été créées par l'implémentation avec la swap chain et elles seront automatiquement supprimées avec la
506511destruction de la swap chain, nous n'aurons donc rien à rajouter dans la fonction ` cleanup ` .
507512
508- Ajoutons le code nécessaire à la récupération des références à la fin de ` createSwapChain ` , juste après l'appel à
513+ Ajoutons le code nécessaire à la récupération des références à la fin de ` createSwapChain ` , juste après l'appel à
509514` vkCreateSwapchainKHR ` . Comme notre logique n'a au final informé Vulkan que d'un minimum pour le nombre d'images dans la
510515swap chain, nous devons nous enquérir du nombre d'images avant de redimensionner le conteneur.
511516
0 commit comments