@@ -72,21 +72,21 @@ Il nous faut aussi mettre à jour les appels.
7272```c++
7373createImage(swapChainExtent.width, swapChainExtent.height, 1, depthFormat, VK_IMAGE_TILING_OPTIMAL, VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT, depthImage, depthImageMemory);
7474...
75- createImage(texWidth, texHeight, mipLevels, VK_FORMAT_R8G8B8A8_UNORM , VK_IMAGE_TILING_OPTIMAL, VK_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_SAMPLED_BIT, VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT, textureImage, textureImageMemory);
75+ createImage(texWidth, texHeight, mipLevels, VK_FORMAT_R8G8B8A8_SRGB , VK_IMAGE_TILING_OPTIMAL, VK_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_SAMPLED_BIT, VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT, textureImage, textureImageMemory);
7676```
7777
7878``` c++
7979swapChainImageViews[i] = createImageView(swapChainImages[i], swapChainImageFormat, VK_IMAGE_ASPECT_COLOR_BIT, 1 );
8080...
8181depthImageView = createImageView(depthImage, depthFormat, VK_IMAGE_ASPECT_DEPTH_BIT, 1 );
8282...
83- textureImageView = createImageView(textureImage, VK_FORMAT_R8G8B8A8_UNORM , VK_IMAGE_ASPECT_COLOR_BIT, mipLevels);
83+ textureImageView = createImageView(textureImage, VK_FORMAT_R8G8B8A8_SRGB , VK_IMAGE_ASPECT_COLOR_BIT, mipLevels);
8484```
8585
8686``` c++
8787transitionImageLayout (depthImage, depthFormat, VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL, 1);
8888...
89- transitionImageLayout(textureImage, VK_FORMAT_R8G8B8A8_UNORM , VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, mipLevels);
89+ transitionImageLayout(textureImage, VK_FORMAT_R8G8B8A8_SRGB , VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, mipLevels);
9090```
9191
9292## Génération des mipmaps
@@ -102,7 +102,7 @@ création de l'image.
102102
103103```c++
104104...
105- createImage(texWidth, texHeight, mipLevels, VK_FORMAT_R8G8B8A8_UNORM , VK_IMAGE_TILING_OPTIMAL, VK_IMAGE_USAGE_TRANSFER_SRC_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_SAMPLED_BIT, VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT, textureImage, textureImageMemory);
105+ createImage(texWidth, texHeight, mipLevels, VK_FORMAT_R8G8B8A8_SRGB , VK_IMAGE_TILING_OPTIMAL, VK_IMAGE_USAGE_TRANSFER_SRC_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_SAMPLED_BIT, VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT, textureImage, textureImageMemory);
106106...
107107```
108108
@@ -118,7 +118,7 @@ donc devoir écrire quelque commandes liées aux barrières de pipeline. Supprim
118118
119119``` c++
120120...
121- transitionImageLayout (textureImage, VK_FORMAT_R8G8B8A8_UNORM , VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, mipLevels);
121+ transitionImageLayout (textureImage, VK_FORMAT_R8G8B8A8_SRGB , VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, mipLevels);
122122 copyBufferToImage(stagingBuffer, textureImage, static_cast<uint32_t>(texWidth), static_cast<uint32_t>(texHeight));
123123//transitionné vers VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL lors de la generation des mipmaps
124124...
@@ -132,7 +132,7 @@ Nous allons maintenant écrire la fonction qui génèrera les mipmaps.
132132```c++
133133void generateMipmaps(VkImage image, int32_t texWidth, int32_t texHeight, uint32_t mipLevels) {
134134 VkCommandBuffer commandBuffer = beginSingleTimeCommands();
135-
135+
136136 VkImageMemoryBarrier barrier{};
137137 barrier.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER;
138138 barrier.image = image;
@@ -142,7 +142,7 @@ void generateMipmaps(VkImage image, int32_t texWidth, int32_t texHeight, uint32_
142142 barrier.subresourceRange.baseArrayLayer = 0;
143143 barrier.subresourceRange.layerCount = 1;
144144 barrier.subresourceRange.levelCount = 1;
145-
145+
146146 endSingleTimeCommands(commandBuffer);
147147}
148148```
@@ -266,7 +266,7 @@ n'a jamais servie de source à une copie.
266266Appelez finalement cette fonction depuis `createTextureImage` :
267267
268268```c++
269- transitionImageLayout(textureImage, VK_FORMAT_R8G8B8A8_UNORM , VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, mipLevels);
269+ transitionImageLayout(textureImage, VK_FORMAT_R8G8B8A8_SRGB , VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, mipLevels);
270270 copyBufferToImage(stagingBuffer, textureImage, static_cast<uint32_t>(texWidth), static_cast<uint32_t>(texHeight));
271271//transions vers VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL pendant la génération des mipmaps
272272...
@@ -287,7 +287,7 @@ Ajoutez d'abord un paramètre qui indique le format de l'image :
287287void createTextureImage () {
288288 ...
289289
290- generateMipmaps (textureImage, VK_FORMAT_R8G8B8A8_UNORM , texWidth, texHeight, mipLevels);
290+ generateMipmaps (textureImage, VK_FORMAT_R8G8B8A8_SRGB , texWidth, texHeight, mipLevels);
291291}
292292
293293void generateMipmaps (VkImage image, VkFormat imageFormat, int32_t texWidth, int32_t texHeight, uint32_t mipLevels) {
0 commit comments