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

Skip to content

Commit 40c07ba

Browse files
author
Alexis Ronez
committed
Rephrased Uniform buffers -> Descriptor pool and sets
1 parent 31f9497 commit 40c07ba

1 file changed

Lines changed: 20 additions & 20 deletions

File tree

fr/05_Uniform_buffers/01_Descriptor_pool_et_sets.md

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
## Introduction
22

3-
L'objet `VkDescriptorSetLayout` que nous avons créé au chapitre précédent décrit les descripteurs que nous devons lier
4-
pour les opérations de rendu. Dans ce chapitre nous allons créer les véritables sets de descripteurs, un pour chaque
5-
`VkBuffer`, afin que nous puissions chacun les lier au descripteur UBO.
3+
L'objet `VkDescriptorSetLayout` que nous avons créé dans le chapitre précédent décrit les descripteurs que nous devons
4+
lier pour les opérations de rendu. Dans ce chapitre nous allons créer les véritables sets de descripteurs, un pour
5+
chaque `VkBuffer`, afin que nous puissions chacun les lier au descripteur de l'UBO côté shader.
66

77
## Pool de descripteurs
88

@@ -43,15 +43,15 @@ poolInfo.poolSizeCount = 1;
4343
poolInfo.pPoolSizes = &poolSize;
4444
```
4545

46-
Nous devons aussi spécifier le nombre maximum de sets de descriptors que nous sommes susceptibles d'allouer.
46+
Nous devons aussi spécifier le nombre maximum de sets de descripteurs que nous sommes susceptibles d'allouer.
4747

4848
```c++
49-
poolInfo.maxSets = static_cast<uint32_t>(swapChainImages.size());;
49+
poolInfo.maxSets = static_cast<uint32_t>(swapChainImages.size());
5050
```
5151

5252
La stucture possède un membre optionnel également présent pour les command pools. Il permet d'indiquer que les
5353
sets peuvent être libérés indépendemment les uns des autres avec la valeur
54-
`VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT`. Comme nous ne voulons pas toucher aux descripteurs pendant que le
54+
`VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT`. Comme nous n'allons pas toucher aux descripteurs pendant que le
5555
programme s'exécute, nous n'avons pas besoin de l'utiliser. Indiquez `0` pour ce champ.
5656

5757
```c++
@@ -60,11 +60,11 @@ VkDescriptorPool descriptorPool;
6060
...
6161

6262
if (vkCreateDescriptorPool(device, &poolInfo, nullptr, &descriptorPool) != VK_SUCCESS) {
63-
throw std::runtime_error("echec lors de la creation de la pool de descripteurs!");
63+
throw std::runtime_error("echec de la creation de la pool de descripteurs!");
6464
}
6565
```
6666

67-
Créez un nouveau membre donnée pour référencer la pool, puis appelez `vkCreateDescriptorPool`. La pool doit alors être
67+
Créez un nouveau membre donnée pour référencer la pool, puis appelez `vkCreateDescriptorPool`. La pool doit être
6868
détruite à la fin du programme, comme la plupart des ressources liées au rendu.
6969

7070
```c++
@@ -77,7 +77,7 @@ void cleanup() {
7777
}
7878
```
7979

80-
## Set de descriptors
80+
## Set de descripteurs
8181

8282
Nous pouvons maintenant allouer les sets de descipteurs. Créez pour cela la fonction `createDescriptorSets` :
8383

@@ -123,13 +123,13 @@ std::vector<VkDescriptorSet> descriptorSets;
123123
124124
descriptorSets.resize(swapChainImages.size());
125125
if (vkAllocateDescriptorSets(device, &allocInfo, descriptorSets.data()) != VK_SUCCESS) {
126-
throw std::runtime_error("echec lors de l'allocation d'un set de descripteurs!");
126+
throw std::runtime_error("echec de l'allocation d'un set de descripteurs!");
127127
}
128128
```
129129

130130
Il n'est pas nécessaire de détruire les sets de descripteurs explicitement, car leur libération est induite par la
131-
destruction de la pool. L'appel à `vkAllocateDescriptorSets` alloue donc tous les sets, chacun possédant un descripteur
132-
de buffer uniform.
131+
destruction de la pool. L'appel à `vkAllocateDescriptorSets` alloue donc tous les sets, chacun possédant un unique
132+
descripteur d'UBO.
133133

134134
Nous avons créé les sets mais nous n'avons pas paramétré les descripteurs. Nous allons maintenant créer une boucle pour
135135
rectifier ce problème :
@@ -152,7 +152,7 @@ for (size_t i = 0; i < swapChainImages.size(); i++) {
152152
}
153153
```
154154

155-
Nous allons utiliser tout le buffer, donc nous pourrions indiquer `VK_WHOLE_SIZE`. La configuration des
155+
Nous allons utiliser tout le buffer, il est donc aussi possible d'indiquer `VK_WHOLE_SIZE`. La configuration des
156156
descripteurs est maintenant mise à jour avec la fonction `vkUpdateDescriptorSets`. Elle prend un tableau de
157157
`VkWriteDescriptorSet` en paramètre.
158158

@@ -178,8 +178,8 @@ type en même temps. La fonction commence à `dstArrayElement` et s'étend sur `
178178

179179
```c++
180180
descriptorWrite.pBufferInfo = &bufferInfo;
181-
descriptorWrite.pImageInfo = nullptr; // Optionnel
182-
descriptorWrite.pTexelBufferView = nullptr; // Optionnel
181+
descriptorWrite.pImageInfo = nullptr; // Optionel
182+
descriptorWrite.pTexelBufferView = nullptr; // Optionel
183183
```
184184

185185
Le dernier champ que nous allons utiliser est `pBufferInfo`. Il permet de fournir `descriptorCount` structures qui
@@ -197,8 +197,8 @@ Les mises à jour sont appliquées quand nous appellons `vkUpdateDescriptorSets`
197197
## Utiliser des sets de descripteurs
198198
199199
Nous devons maintenant étendre `createCommandBuffers` pour qu'elle lie les sets de descripteurs aux descripteurs des
200-
shaders avec la commande `cmdBindDescriptorSets`. Il faut invoquer cette commande dans la configuration des buffers de
201-
commande avant l'appel à `vkCmdDrawIndexed`.
200+
shaders avec la commande `cmdBindDescriptorSets`. Il faut invoquer cette commande dans l'enregistrement des command
201+
buffers avant l'appel à `vkCmdDrawIndexed`.
202202
203203
```c++
204204
vkCmdBindDescriptorSets(commandBuffers[i], VK_PIPELINE_BIND_POINT_GRAPHICS, pipelineLayout, 0, 1, &descriptorSets[i], 0, nullptr);
@@ -229,7 +229,7 @@ Maintenant vous devriez voir ceci en lançant votre programme :
229229
![](/images/spinning_quad.png)
230230

231231
Le rectangle est maintenant un carré car la matrice de projection corrige son aspect. La fonction `updateUniformBuffer`
232-
traite les redimensionnements d'écran, il n'est donc pas nécessaire de recréer les descripteurs dans
232+
inclut d'office les redimensionnements d'écran, il n'est donc pas nécessaire de recréer les descripteurs dans
233233
`recreateSwapChain`.
234234

235235
## Plusieurs sets de descripteurs
@@ -243,8 +243,8 @@ layout(set = 0, binding = 0) uniform UniformBufferObject { ... }
243243
```
244244
245245
Vous pouvez utiliser cette possibilité pour placer dans différents sets les descripteurs dépendant d'objets et les
246-
descripteurs partagés. De cette manière vous éviter de relier une partie des descripteurs, ce qui peut être plus
247-
performant.
246+
descripteurs partagés. De cette manière vous éviter de relier constemment une partie des descripteurs, ce qui peut être
247+
plus performant.
248248
249249
[Code C++](/code/22_descriptor_sets.cpp) /
250250
[Vertex shader](/code/21_shader_ubo.vert) /

0 commit comments

Comments
 (0)