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

Skip to content

Commit 749f6d1

Browse files
committed
Merge branch 'LittleWhite-tb-fixes-fr2'
2 parents 6adb52d + 2ab48ce commit 749f6d1

31 files changed

Lines changed: 269 additions & 268 deletions

fr/00_Introduction.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ grand travail de votre part pour assurer un comportement correct.
1818

1919
Le message véhiculé ici est que Vulkan n'est pas fait pour tout le monde. Cette API est conçue pour les programmeurs
2020
concernés par la programmation avec GPU de haute performance, et qui sont prêts à y travailler sérieusement. Si vous
21-
êtes intéressées dans le développement de jeux vidéos, et moins dans les graphismes eux-mêmes, vous devriez plutôt
21+
êtes intéressées dans le développement de jeux vidéo, et moins dans les graphismes eux-mêmes, vous devriez plutôt
2222
continuer d'utiliser OpenGL et DirectX, qui ne seront pas dépréciés en faveur de Vulkan avant un certain temps. Une
2323
autre alternative serait d'utiliser un moteur de jeu comme
2424
[Unreal Engine](https://en.wikipedia.org/wiki/Unreal_Engine#Unreal_Engine_4) ou

fr/01_Vue_d'ensemble.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ if (vkCreateXXX(&createInfo, nullptr, &object) != VK_SUCCESS) {
206206
De nombreuses structure imposent que l’on spécifie explicitement leur type dans le membre donnée «sType». Le membre
207207
donnée «pNext» peut pointer vers une extension et sera toujours `nullptr` dans ce tutoriel. Les fonctions qui créent ou
208208
détruisent les objets ont un paramètre appelé `VkAllocationCallbacks`, qui vous permettent de spécifier un allocateur.
209-
Nous le metterons également à `nullptr`.
209+
Nous le mettrons également à `nullptr`.
210210

211211
La plupart des fonctions retournent un `VkResult`, qui peut être soit `VK_SUCCESS` soit un code d’erreur. La
212212
spécification décrit lesquels chaque fonction renvoie et ce qu’ils signifient.

fr/02_Environnement_de_développement.md

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ int main() {
129129
}
130130
```
131131

132-
Configurons maintenant le projet afin de se débarasser des erreurs. Ouvrez le dialogue des propriétés du projet et
132+
Configurons maintenant le projet afin de se débarrasser des erreurs. Ouvrez le dialogue des propriétés du projet et
133133
assurez-vous que "All Configurations" est sélectionné, car la plupart des paramètres s'appliquent autant à "Debug"
134134
qu'à "Release".
135135

@@ -233,9 +233,9 @@ Vulkan, nous utiliserons la [librairie GLFW](http://www.glfw.org/) pour créer u
233233
ou MacOS indifféremment. Il existe d'autres librairies telles que [SDL](https://www.libsdl.org/), mais GLFW à
234234
l'avantage d'abstraire d'autres aspects spécifiques à la plateforme requis par Vulkan.
235235

236-
Nous allons installer GLFW à partir des sources, car Vulkan nécessite une version récente. Vous pouvez trouvez ces
236+
Nous allons installer GLFW à partir des sources, car Vulkan nécessite une version récente. Vous pouvez trouver ces
237237
sources sur le [site officiel](http://www.glfw.org/). Extrayez les sources où vous voulez et ouvrez un terminal dans le
238-
dossier extrait, où se trouve le fichier "CmakeLists.txt".
238+
dossier extrait, où se trouve le fichier "CMakeLists.txt".
239239

240240
Exécutez les commandes suivantes afin de générer un makefile et de compiler GLFW :
241241

@@ -310,7 +310,7 @@ int main() {
310310
}
311311
```
312312

313-
Nous allons maintenant créer un makefile pour compiler et lancer ce code. Créez un fichier "makefile". Je pars du
313+
Nous allons maintenant créer un makefile pour compiler et lancer ce code. Créez un fichier "Makefile". Je pars du
314314
principe que vous connaissez déjà les bases de makefile, dont les variables et les règles. Sinon vous pouvez trouver des
315315
introductions claires sur internet, par exemple [ici](https://makefiletutorial.com/).
316316

@@ -338,7 +338,7 @@ LDFLAGS = -L$(VULKAN_SDK_PATH)/lib `pkg-config --static --libs glfw3` -lvulkan
338338
```
339339

340340
Le premier paramètre permet de localiser les librairies comme "libvulkan.so" dans le dossier "x86_64/lib" du SDK. La
341-
seconde partie utilise `pkg-config` pour trouver les pramètres nécessaires au linker pour compiler avec GLFW. Enfin,
341+
seconde partie utilise `pkg-config` pour trouver les pramètres nécessaires au linker pour compiler avec GLFW. Enfin,
342342
`-lvulkan` correspond au loader dynamique des fonctions Vulkan présent dans le SDK.
343343

344344
Spécifier les commandes pour la compilation de "VulkanTest" est désormais un jeu d'enfant. Assurez-vous que vous
@@ -349,7 +349,7 @@ VulkanTest: main.cpp
349349
g++ $(CFLAGS) -o VulkanTest main.cpp $(LDFLAGS)
350350
```
351351

352-
Vérifiez que le fichier fonctionne en le sauveguardant et en exécutant make depuis un terminal ouvert dans le
352+
Vérifiez que le fichier fonctionne en le sauvegardant et en exécutant make depuis un terminal ouvert dans le
353353
dossier le contenant. Vous devriez avoir un exécutable appelé "VulkanTest".
354354

355355
Nous allons ensuite définir deux règles, `test` et `clean`. La première exécutera le programme et le second supprimera
@@ -365,7 +365,7 @@ clean:
365365
rm -f VulkanTest
366366
```
367367

368-
Vous devriez constater que `make clean` fonctionne mais que `make test` s'interrompera avec le message suivant :
368+
Vous devriez constater que `make clean` fonctionne mais que `make test` s'interrompra avec le message suivant :
369369

370370
```text
371371
./VulkanTest: error while loading shared libraries: libvulkan.so.1: cannot open shared object file: No such file or directory
@@ -382,7 +382,7 @@ test: VulkanTest
382382
Le programme devrait se lancer correctement maintenant, et afficher le nombre d'extensions disponibles. Si ce nombre est
383383
zéro, il y a un problème avec la configuration de Vulkan sur votre système. L'application devrait quitter avec le
384384
code 0 lorsque vous fermez la fenêtre. Il y a pourtant encore une variable que nous devons créer. Nous allons
385-
utiliser les validation layers et devons donc lui indiquer leur localisation avec la variable
385+
utiliser les validation layers et devons donc lui indiquer leur localisation avec la variable
386386
`VK_LAYER_PATH` :
387387

388388
```make
@@ -416,7 +416,7 @@ nom du projet et tout sera prêt!
416416
Avant d'avancer, regardons le SDK plus en détail. Il y a d'autres programmes dans ce dossier qui vous seront utiles :
417417
"glslangValidator" et "glslc". Nous nous en servirons pour compiler les shaders. Ils transforment un code lisible par l'homme
418418
écrit en [GLSL](https://en.wikipedia.org/wiki/OpenGL_Shading_Language) en bytecode. Nous couvrirons cela dans le
419-
chapitre [modeules shader](!fr/Dessiner_un_triangle/Pipeline_graphique_basique/Modules_shaders).
419+
chapitre [modules shader](!fr/Dessiner_un_triangle/Pipeline_graphique_basique/Modules_shaders).
420420

421421

422422
Enfin, le dossier "Include" contient les headers Vulkan. Vous pouvez parourir les autres
@@ -539,7 +539,7 @@ d'appeler quelques fonctions de l'API pour s'assurer que tout fonctionne. Nous v
539539
plus tard.
540540

541541
Xcode devrait déjà vous afficher des erreurs comme le fait que des librairies soient introuvables. Nous allons
542-
maintenant les faire dispaître. Séletionnez votre projet sur le menu *Project Navigator*. Ouvrez
542+
maintenant les faire disparaître. Sélectionnez votre projet sur le menu *Project Navigator*. Ouvrez
543543
*Build Settings* puis :
544544

545545
* Trouvez le champ **Header Search Paths** et ajoutez "/usr/local/include" (c'est ici que Homebrew installe les headers)
@@ -583,7 +583,7 @@ avoir ceci :
583583

584584
![](/images/xcode_output.png)
585585

586-
Si vouc obtenez `0 extensions supported`, il y a un problème avec la configuration de Vulkan sur votre système. Les
587-
autres données proviennet de librairies, et dépendent de votre configuration.
586+
Si vous obtenez `0 extensions supported`, il y a un problème avec la configuration de Vulkan sur votre système. Les
587+
autres données proviennent de librairies, et dépendent de votre configuration.
588588

589589
Vous êtes maintenant prêts à vous [lancer avec Vulkan!](!fr/Dessiner_un_triangle/Mise_en_place/Code_de_base).

fr/03_Dessiner_un_triangle/00_Mise_en_place/00_Code_de_base.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -70,27 +70,27 @@ automatiquement.
7070

7171
De la même façon qu'une quelconque ressource explicitement allouée par `new` doit être explicitement libérée par `delete`, nous
7272
devrons explicitement détruire quasiment toutes les ressources Vulkan que nous allouerons. Il est possible d'exploiter
73-
des fonctioinnalités du C++ pour s'aquitter automatiquement de cela. Ces possibilités sont localisées dans `<memory>` si
73+
des fonctionnalités du C++ pour s’acquitter automatiquement de cela. Ces possibilités sont localisées dans `<memory>` si
7474
vous désirez les utiliser. Cependant nous resterons explicites pour toutes les opérations dans ce tutoriel, car la
7575
puissance de Vulkan réside en particulier dans la clareté de l'expression de la volonté du programmeur. De plus, cela
7676
nous permettra de bien comprendre la durée de vie de chacun des objets.
7777

7878
Après avoir suivi ce tutoriel vous pourrez parfaitement implémenter une gestion automatique des ressources en
79-
spécialisant `std::shared_ptr` par exemple. L'utilisations du [RAII](https://en.wikipedia.org/wiki/Resource_Acquisition_Is_Initialization)
79+
spécialisant `std::shared_ptr` par exemple. L'utilisation du [RAII](https://en.wikipedia.org/wiki/Resource_Acquisition_Is_Initialization)
8080
à votre avantage est toujours recommandé en C++ pour de gros programmes Vulkan, mais il est quand même bon de
8181
commencer par connaître les détails de l'implémentation.
8282

83-
Les objets Vulkan peuvent être crées de deux manières. Soit ils sont directement crées avec une fonction du type
84-
`vkCreateXXX`, soit il sont alloués à l'aide d'un autre objet avec une fonction `vkAllocateXXX`. Après vous
85-
être assuré qu'il n'est plus utilisé où que ce soit, il faut le détruire en utilisant les fonctions
83+
Les objets Vulkan peuvent être créés de deux manières. Soit ils sont directement créés avec une fonction du type
84+
`vkCreateXXX`, soit ils sont alloués à l'aide d'un autre objet avec une fonction `vkAllocateXXX`. Après vous
85+
être assuré qu'il n'est plus utilisé où que ce soit, il faut le détruire en utilisant les fonctions
8686
`vkDestroyXXX` ou `vkFreeXXX`, respectivement. Les paramètres de ces fonctions varient sauf pour l'un d'entre eux :
8787
`pAllocator`. Ce paramètre optionnel vous permet de spécifier un callback sur un allocateur de mémoire. Nous
8888
n'utiliserons jamais ce paramètre et indiquerons donc toujours `nullptr`.
8989

9090
## Intégrer GLFW
9191

9292
Vulkan marche très bien sans fenêtre si vous voulez l'utiliser pour du rendu sans écran (offscreen rendering en
93-
Anglais), mais c'est tout de même plus intéressant d'afficher quelque chose! Remplacez d'abord la ligne
93+
Anglais), mais c'est tout de même plus intéressant d'afficher quelque chose! Remplacez d'abord la ligne
9494
`#include <vulkan/vulkan.h>` par :
9595

9696
```c++
@@ -179,7 +179,7 @@ void mainLoop() {
179179
}
180180
```
181181

182-
Ce code est relativement simple. GLFW récupère tous les évènements disponible, puis vérifie qu'aucun d'entre eux ne
182+
Ce code est relativement simple. GLFW récupère tous les évènements disponibles, puis vérifie qu'aucun d'entre eux ne
183183
correspond à une demande de fermeture de fenêtre. Ce sera aussi ici que nous appellerons la fonction qui affichera un
184184
triangle.
185185

fr/03_Dessiner_un_triangle/00_Mise_en_place/01_Instance.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,9 @@ createInfo.pApplicationInfo = &appInfo;
5454
```
5555

5656
Les deux premiers paramètres sont simples. Les deux suivants spécifient les extensions dont nous aurons besoin. Comme
57-
nous l'avons vu dans l'introduction, Vulkan ne connait pas la plateforme sur laquelle il travaille, et nous aurons donc
57+
nous l'avons vu dans l'introduction, Vulkan ne connaît pas la plateforme sur laquelle il travaille, et nous aurons donc
5858
besoin d'extensions pour utiliser des interfaces avec le gestionnaire de fenêtre. GLFW possède une fonction très
59-
pratiques qui nous donne la liste des extensions dont nous aurons besoin pour afficher nos résultats. Remplissez donc la
59+
pratique qui nous donne la liste des extensions dont nous aurons besoin pour afficher nos résultats. Remplissez donc la
6060
structure de ces données :
6161

6262
```c++
@@ -103,7 +103,7 @@ Lancez votre programme pour voir si l'instance s'est créée correctement.
103103

104104
## Vérification du support des extensions
105105

106-
Si vous regardez la documentation pour `vkCreateInstance` vous pourrez voir que l'un des messages d'erreur possible est
106+
Si vous regardez la documentation pour `vkCreateInstance` vous pourrez voir que l'un des messages d'erreur possible est
107107
`VK_ERROR_EXTENSION_NOT_PRESENT`. Nous pourrions juste interrompre le programme et afficher une erreur si une extension
108108
manque. Ce serait logique pour des fonctionnalités cruciales comme l'affichage, mais pas dans le cas d'extensions
109109
optionnelles.
@@ -146,7 +146,7 @@ for (const auto& extension : extensions) {
146146
```
147147

148148
Vous pouvez ajouter ce code dans la fonction `createInstance` si vous voulez indiquer des informations à propos du
149-
support Vulkan sur la machine. Petit challenge : programmez une fonction vérifiant si les extension dont vous avez
149+
support Vulkan sur la machine. Petit challenge : programmez une fonction vérifiant si les extensions dont vous avez
150150
besoin (en particulier celles indiquées par GLFW) sont disponibles.
151151

152152
## Libération des ressources
@@ -164,7 +164,7 @@ void cleanup() {
164164
}
165165
```
166166

167-
Les paramètres de cette fonctions sont évidents. Nous y retrouvons le paramètre pour un désallocateur que nous laissons
167+
Les paramètres de cette fonction sont évidents. Nous y retrouvons le paramètre pour un désallocateur que nous laissons
168168
`nullptr`. Toutes les ressources que nous allouerons à partir du prochain chapitre devront être libérées avant la
169169
libération de l'instance.
170170

fr/03_Dessiner_un_triangle/00_Mise_en_place/02_Validation_layers.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
## Que sont les validation layers?
22

3-
L'API Vulkan est concu pour limiter au maximum le travail du driver. Par conséquent il n'y a aucun traitement d'erreur
3+
L'API Vulkan est conçue pour limiter au maximum le travail du driver. Par conséquent il n'y a aucun traitement d'erreur
44
par défaut. Une erreur aussi simple que se tromper dans la valeur d'une énumération ou passer un pointeur nul comme
55
argument non optionnel résultent en un crash. Dans la mesure où Vulkan nous demande d'être complètement explicite, il
66
est facile d'utiliser une fonctionnalité optionnelle et d'oublier de mettre en place l'utilisation de l'extension à
@@ -94,7 +94,7 @@ bool checkValidationLayerSupport() {
9494
}
9595
```
9696

97-
Verifiez que toutes les layers de `validationLayers` sont présentes dans la liste des layers disponibles. Vous aurez
97+
Vérifiez que toutes les layers de `validationLayers` sont présentes dans la liste des layers disponibles. Vous aurez
9898
besoin de `<cstring>` pour la fonction `strcmp`.
9999

100100
```c++
@@ -189,7 +189,7 @@ pas avoir besoin de vérifier sa présence dans la mesure où les validation lay
189189
mais sait-on jamais.
190190

191191
Intéressons-nous maintenant à la fonction de rappel. Ajoutez la fonction statique `debugCallback` à votre classe avec le
192-
prototype `PFN_vkDebugUtilsMessengerCallbackEXT`. `VKAPI_ATTR` et `VKAPI_CALL` assurent une comptaibilité avec tous les
192+
prototype `PFN_vkDebugUtilsMessengerCallbackEXT`. `VKAPI_ATTR` et `VKAPI_CALL` assurent une compatibilité avec tous les
193193
compilateurs.
194194

195195
```c++
@@ -209,22 +209,22 @@ Le premier paramètre indique la sévérité du message, et peut prendre les val
209209
210210
* `VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT`: Message de suivi des appels
211211
* `VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT`: Message d'information (allocation d'une ressource...)
212-
* `VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT`: Message relevant un comportment qui n'est pas un bug mais plutôt
212+
* `VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT`: Message relevant un comportement qui n'est pas un bug mais plutôt
213213
une imperfection involontaire
214-
* `VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT`: Message relevant un comportant invalide pouvant mener à un crash
214+
* `VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT`: Message relevant un comportement invalide pouvant mener à un crash
215215
216216
Les valeurs de cette énumération on été conçues de telle sorte qu'il est possible de les comparer pour vérifier la
217217
sévérité d'un message, par exemple :
218218
219219
```c++
220220
if (messageSeverity >= VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT) {
221-
// Le message est suffisemment important pour être affiché
221+
// Le message est suffisamment important pour être affiché
222222
}
223223
```
224224

225225
Le paramètre `messageType` peut prendre les valeurs suivantes :
226226

227-
* `VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT` : Un évenement quelconque est survenu, sans lien avec les
227+
* `VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT` : Un événement quelconque est survenu, sans lien avec les
228228
performances ou la spécification
229229
* `VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT` : Une violation de la spécification ou une potentielle erreur est
230230
survenue
@@ -368,7 +368,7 @@ quel fonction a lancé un appel au messager, vous pouvez insérer un point d'arr
368368

369369
## Déboguer la création et la destruction de l'instance
370370

371-
Même si nous avons mis en place un système de déboguage très efficace, deux fonctions passent sous le radar. Comme il
371+
Même si nous avons mis en place un système de débogage très efficace, deux fonctions passent sous le radar. Comme il
372372
est nécessaire d'avoir une instance pour appeler `vkCreateDebugUtilsMessengerEXT`, la création de l'instance n'est pas
373373
couverte par le messager. Le même problème apparait avec la destruction de l'instance.
374374

@@ -397,7 +397,7 @@ void setupDebugMessenger() {
397397
}
398398
```
399399
400-
Nous pouvons réutiliser cette fonctin dans `createInstance` :
400+
Nous pouvons réutiliser cette fonction dans `createInstance` :
401401
402402
```c++
403403
void createInstance() {

fr/03_Dessiner_un_triangle/00_Mise_en_place/03_Physical_devices_et_queue_families.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ que nous utiliserons de nouvelles fonctionnalités, nous les ajouterons dans cet
8181
## Vérification des fonctionnalités de base
8282

8383
Pour évaluer la compatibilité d'un physical device nous devons d'abord nous informer sur ses capacités. Des propriétés
84-
basiques comme le nom, le type et les versions de Vulkan supportées peuvent être obtenues en appelant
84+
basiques comme le nom, le type et les versions de Vulkan supportées peuvent être obtenues en appelant
8585
`vkGetPhysicalDeviceProperties`.
8686

8787
```c++
@@ -236,7 +236,7 @@ std::cout << std::boolalpha << graphicsFamily.has_value() << std::endl; // vrai
236236
```
237237

238238
`std::optional` est un wrapper qui ne contient aucune valeur tant que vous ne lui en assignez pas une.
239-
Vous pouvez, quelque soit le moment, lui demander si il contient une valeur ou non en appelant sa fonction membre
239+
Vous pouvez, quelque soit le moment, lui demander si il contient une valeur ou non en appelant sa fonction membre
240240
`has_value()`. On peut donc changer le code comme suit:
241241

242242
```c++
@@ -269,7 +269,7 @@ QueueFamilyIndices findQueueFamily(VkPhysicalDevice) {
269269
}
270270
```
271271

272-
Récupérer la liste des queue families disponibles se fait de la même manière que d'habitude, avec la fonction
272+
Récupérer la liste des queue families disponibles se fait de la même manière que d'habitude, avec la fonction
273273
`vkGetPhysicalDeviceQueueFamilyProperties` :
274274

275275
```c++
@@ -306,7 +306,7 @@ bool isDeviceSuitable(VkPhysicalDevice device) {
306306
}
307307
```
308308
309-
Pour que ce soit plus pratique, nous allons aussi ajouté une fonction générique à la structure:
309+
Pour que ce soit plus pratique, nous allons aussi ajouter une fonction générique à la structure:
310310
311311
```c++
312312
struct QueueFamilyIndices {
@@ -326,7 +326,7 @@ bool isDeviceSuitable(VkPhysicalDevice device) {
326326
}
327327
```
328328

329-
On peut également utiliser ceci pour sortitr plus tôt de `findQueueFamilies`:
329+
On peut également utiliser ceci pour sortir plus tôt de `findQueueFamilies`:
330330

331331
```c++
332332
for (const auto& queueFamily : queueFamilies) {

0 commit comments

Comments
 (0)