Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit fa4079e

Browse files
committed
fix bad vkResetFences call place
1 parent 9b84ec3 commit fa4079e

2 files changed

Lines changed: 17 additions & 12 deletions

File tree

fr/03_Dessiner_un_triangle/03_Effectuer_le_rendu/02_Rendu_et_présentation.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -587,6 +587,23 @@ void drawFrame() {
587587
}
588588
```
589589

590+
Parce que nous avons maintenant plus d'appels à `vkWaitForFences`, les apples à `vkResetFences` doivent être **déplacés**. Le mieux reste
591+
de simplement l'appeler juste avant d'utiliser la fence:
592+
593+
```c++
594+
void drawFrame() {
595+
...
596+
597+
vkResetFences(device, 1, &inFlightFences[currentFrame]);
598+
599+
if (vkQueueSubmit(graphicsQueue, 1, &submitInfo, inFlightFences[currentFrame]) != VK_SUCCESS) {
600+
throw std::runtime_error("échec de l'envoi d'un command buffer!");
601+
}
602+
603+
...
604+
}
605+
```
606+
590607
Nous avons implémenté tout ce qui est nécessaire à la synchronisation pour certifier qu'il n'y a pas plus de deux frames de travail
591608
dans la queue et que ces frames n'utilise pas accidentellement la même image. Notez qu'il est tout à fait normal pour d'autre parties du code,
592609
comme le nettoyage final, de se reposer sur des mécanismes de synchronisation plus durs comme `vkDeviceWaitIdle`. Vous devriez décider

fr/03_Dessiner_un_triangle/04_Recréation_de_la_swap_chain.md

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -162,18 +162,6 @@ Si la swap chain se trouve être dépassée quand nous essayons d'acquérir une
162162
de présenter un quelconque résultat. Nous devons de ce fait aussitôt recréer la swap chain et tenter la présentation
163163
avec la frame suivante.
164164

165-
Cepedant si nous interrompons le rendu à ce moment alors la fence synchronisant la présentation ne sera jamais envoyée
166-
à `vkQueueSubmit` et elle nous fera attendre éternellement la boucle suivante. Nous pourrions recréer les fences avec
167-
la swap chain, mais il est plus simple de déplacer l'appel à `vkResetFence` :
168-
169-
```c++
170-
vkResetFences(device, 1, &inFlightFences[currentFrame]);
171-
172-
if (vkQueueSubmit(graphicsQueue, 1, &submitInfo, inFlightFences[currentFrame]) != VK_SUCCESS) {
173-
throw std::runtime_error("échec de l'envoi d'un command buffer!");
174-
}
175-
```
176-
177165
Vous pouvez aussi décider de recréer la swap chain si sa configuration n'est plus optimale, mais j'ai choisi de ne pas
178166
le faire ici car nous avons de toute façon déjà acquis l'image. Ainsi `VK_SUCCES` et `VK_SUBOPTIMAL_KHR` sont considérés
179167
comme des indicateurs de succès.

0 commit comments

Comments
 (0)