You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: fr/03_Drawing_a_triangle/00_Setup/00_Code_de_base.md
+13-14Lines changed: 13 additions & 14 deletions
Original file line number
Diff line number
Diff line change
@@ -49,15 +49,15 @@ int main() {
49
49
50
50
Nous incluons ici d'abord le header Vulkan du SDK, qui fournit les fonctions, les structures et les énumérations.
51
51
`stdexcept` et `iostream` nous permettront de reporter et de traiter les erreurs. Le header `functional` nous servira
52
-
pour l'écriture d'une lambda dans la section sur la gestion des ressources. `cstdlib` nous fournit `EXIT_FAILURE` et
53
-
`EXIT_SUCCESS` (optionnels).
52
+
pour l'écriture d'une lambda dans la section sur la gestion des ressources. `cstdlib` nous fournit les macros `EXIT_FAILURE` et
53
+
`EXIT_SUCCESS` (optionnelles).
54
54
55
55
Le programme est écrit à l'intérieur d'une classe, dans laquelle nous stockerons les objets Vulkan. Nous avons également
56
56
une fonction pour la création de chacun de ces objets. Une fois toute l'initialisation réalisée, nous entrons dans la
57
57
boucle principale, qui attendra que nous fermions la fenêtre pour quitter le programme, après avoir libéré toutes les
58
58
ressources que nous avons allouées grâce à la fonction cleanup.
59
59
60
-
Si nous rencontrons une quelconque erreur lors de l'exécution nous soulèverons une `std::runtime_error` comportant un
60
+
Si nous rencontrons une quelconque erreur lors de l'exécution nous lèverons une `std::runtime_error` comportant un
61
61
message descriptif, qui sera affiché sur le terminal depuis la fonction `main`. Afin de s'assurer que nous récupérons
62
62
bien toutes les erreurs, nous utilisons `std::exception` dans le `catch`. Nous verrons bientôt que la requête de
63
63
certaines extensions peut mener à soulever des exceptions.
@@ -67,11 +67,11 @@ nouvel objet Vulkan qui sera justement créé par cette fonction. Nous le détru
67
67
68
68
## Gestion des ressources
69
69
70
-
Comme une quelconque ressource explicitement allouée par `new` doit être explicitement libérée par `delete`, nous
70
+
De la même façon qu'une quelconque ressource explicitement allouée par `new` doit être explicitement libérée par `delete`, nous
71
71
devrons explicitement détruire toutes les ressources Vulkan que nous allouerons. Il est possible d'exploiter des
72
72
fonctioinnalités du C++ pour s'aquitter automatiquement de cela. Ces possibilités sont localisées dans `<memory>` si
73
73
vous désirez les utiliser. Cependant nous resterons explicites pour toutes les opérations dans ce tutoriel, car la
74
-
puissance de Vulkan réside spécifiquement dans la clareté de l'expression de la colonté du programmeur. De plus cela
74
+
puissance de Vulkan réside spécifiquement dans la clareté de l'expression de la volonté du programmeur. De plus cela
75
75
nous permettra de bien comprendre la durée de vie de chacun des objets.
76
76
77
77
Après avoir suivi ce tutoriel vous pourrez parfaitement implémenter une gestion automatique des ressources en
@@ -80,16 +80,15 @@ spécialisant `std::shared_ptr` par exemple. L'utilisations du [RAII](https://en
80
80
connaître les détails de l'implémentation.
81
81
82
82
Les objets Vulkan peuvent être crées de deux manières. Soit ils sont directement crées avec une fonction du type
83
-
`vkCreateXXX`, soit il sont récupérés à partir d'un autre objet avec une fonction du type`vkAllocateXXX`. Après vous
84
-
être assuré qu'il n'est plus utilisé où que ce soit, vous devrezle détruire en utilisant les fonctions du type
83
+
`vkCreateXXX`, soit il sont alloués à l'aide d'un autre objet avec une fonction `vkAllocateXXX`. Après vous
84
+
être assuré qu'il n'est plus utilisé où que ce soit, vous devrez le détruire en utilisant les fonctions
85
85
`vkDestroyXXX` ou `vkFreeXXX`, respectivement. Les paramètres de ces fonctions varient sauf pour l'un d'entre eux :
86
86
`pAllocator`. Ce paramètre optionnel vous permet de spécifier un callback sur un allocateur de mémoire. Nous
87
-
n'utiliserons jamais ce paramètre et l'indiquerons donc toujours nullptr.
87
+
n'utiliserons jamais ce paramètre et indiquerons donc toujours `nullptr`.
88
88
89
89
## Intégrer GLFW
90
90
91
-
Vulkan marche très bien sans fenêtre si vous voulez l'utiliser pour du rendu sans écran, mais c'est tout de même plus
92
-
exitant d'afficher quelque chose! Remplacez d'abord la ligne `#include <vulkan/vulkan.h>` par :
91
+
Vulkan marche très bien sans fenêtre si vous voulez l'utiliser pour du rendu sans écran (offscreen rendering en Anglais), mais c'est tout de même plus exitant d'afficher quelque chose! Remplacez d'abord la ligne `#include <vulkan/vulkan.h>` par :
93
92
94
93
```c++
95
94
#defineGLFW_INCLUDE_VULKAN
@@ -128,7 +127,7 @@ l'interdisons pour l'instant
128
127
glfwWindowHint(GLFW_RESIZABLE, GLFW_FALSE);
129
128
```
130
129
131
-
Il ne nous reste plus qu'à créer la fenêtre. Ajoutez un membre privé `GLFWWindow *m_window` pour en stocker une
130
+
Il ne nous reste plus qu'à créer la fenêtre. Ajoutez un membre privé `GLFWWindow* m_window` pour en stocker une
132
131
référence, et initialisez la ainsi :
133
132
134
133
```c++
@@ -165,7 +164,7 @@ void initWindow() {
165
164
}
166
165
```
167
166
168
-
Pour s'assurer que l'application tourne jusqu'à ce que soit une erreur soit un clic sur la croix ne l'interrompe, nous
167
+
Pour s'assurer que l'application tourne jusqu'à ce qu'une erreur ou un clic sur la croix ne l'interrompe, nous
169
168
devons écrire une petite boucle de gestion d'évènements :
170
169
171
170
```c++
@@ -190,7 +189,7 @@ void cleanup() {
190
189
}
191
190
```
192
191
193
-
Si vous lancez l'application, vous devriez voir une fenêtre appelée "Vulkan" se fermant en cliquant sur la croix.
192
+
Si vous lancez l'application, vous devriez voir une fenêtre appelée "Vulkan" qui se ferme en cliquant sur la croix.
194
193
Maintenant que nous avons une base pour notre application Vulkan, [créons notre premier objet Vulkan!](!Drawing_a_triangle/Setup/Instance)!
0 commit comments