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

Skip to content

Commit 892bc17

Browse files
committed
Fix chooseSwapExtent with resizable window
1 parent cd62489 commit 892bc17

13 files changed

Lines changed: 59 additions & 12 deletions

03_Drawing_a_triangle/04_Swap_chain_recreation.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,17 @@ with `glfwGetWindowUserPointer`. We can then proceed to call
129129
occurs when the window is minimized and it will cause swap chain creation to
130130
fail.
131131
132+
The `chooseSwapExtent` function should also be updated to take the current width
133+
and height of the window into account instead of the initial `WIDTH` and
134+
`HEIGHT`:
135+
136+
```c++
137+
int width, height;
138+
glfwGetWindowSize(window, &width, &height);
139+
140+
VkExtent2D actualExtent = {width, height};
141+
```
142+
132143
## Suboptimal or out-of-date swap chain
133144

134145
It is also possible for Vulkan to tell us that the swap chain is no longer

code/depth_buffering.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1355,7 +1355,10 @@ class HelloTriangleApplication {
13551355
if (capabilities.currentExtent.width != std::numeric_limits<uint32_t>::max()) {
13561356
return capabilities.currentExtent;
13571357
} else {
1358-
VkExtent2D actualExtent = {WIDTH, HEIGHT};
1358+
int width, height;
1359+
glfwGetWindowSize(window, &width, &height);
1360+
1361+
VkExtent2D actualExtent = {width, height};
13591362

13601363
actualExtent.width = std::max(capabilities.minImageExtent.width, std::min(capabilities.maxImageExtent.width, actualExtent.width));
13611364
actualExtent.height = std::max(capabilities.minImageExtent.height, std::min(capabilities.maxImageExtent.height, actualExtent.height));

code/descriptor_layout.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -985,7 +985,10 @@ class HelloTriangleApplication {
985985
if (capabilities.currentExtent.width != std::numeric_limits<uint32_t>::max()) {
986986
return capabilities.currentExtent;
987987
} else {
988-
VkExtent2D actualExtent = {WIDTH, HEIGHT};
988+
int width, height;
989+
glfwGetWindowSize(window, &width, &height);
990+
991+
VkExtent2D actualExtent = {width, height};
989992

990993
actualExtent.width = std::max(capabilities.minImageExtent.width, std::min(capabilities.maxImageExtent.width, actualExtent.width));
991994
actualExtent.height = std::max(capabilities.minImageExtent.height, std::min(capabilities.maxImageExtent.height, actualExtent.height));

code/descriptor_set.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1037,7 +1037,10 @@ class HelloTriangleApplication {
10371037
if (capabilities.currentExtent.width != std::numeric_limits<uint32_t>::max()) {
10381038
return capabilities.currentExtent;
10391039
} else {
1040-
VkExtent2D actualExtent = {WIDTH, HEIGHT};
1040+
int width, height;
1041+
glfwGetWindowSize(window, &width, &height);
1042+
1043+
VkExtent2D actualExtent = {width, height};
10411044

10421045
actualExtent.width = std::max(capabilities.minImageExtent.width, std::min(capabilities.maxImageExtent.width, actualExtent.width));
10431046
actualExtent.height = std::max(capabilities.minImageExtent.height, std::min(capabilities.maxImageExtent.height, actualExtent.height));

code/index_buffer.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -920,7 +920,10 @@ class HelloTriangleApplication {
920920
if (capabilities.currentExtent.width != std::numeric_limits<uint32_t>::max()) {
921921
return capabilities.currentExtent;
922922
} else {
923-
VkExtent2D actualExtent = {WIDTH, HEIGHT};
923+
int width, height;
924+
glfwGetWindowSize(window, &width, &height);
925+
926+
VkExtent2D actualExtent = {width, height};
924927

925928
actualExtent.width = std::max(capabilities.minImageExtent.width, std::min(capabilities.maxImageExtent.width, actualExtent.width));
926929
actualExtent.height = std::max(capabilities.minImageExtent.height, std::min(capabilities.maxImageExtent.height, actualExtent.height));

code/model_loading.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1400,7 +1400,10 @@ class HelloTriangleApplication {
14001400
if (capabilities.currentExtent.width != std::numeric_limits<uint32_t>::max()) {
14011401
return capabilities.currentExtent;
14021402
} else {
1403-
VkExtent2D actualExtent = {WIDTH, HEIGHT};
1403+
int width, height;
1404+
glfwGetWindowSize(window, &width, &height);
1405+
1406+
VkExtent2D actualExtent = {width, height};
14041407

14051408
actualExtent.width = std::max(capabilities.minImageExtent.width, std::min(capabilities.maxImageExtent.width, actualExtent.width));
14061409
actualExtent.height = std::max(capabilities.minImageExtent.height, std::min(capabilities.maxImageExtent.height, actualExtent.height));

code/sampler.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1234,7 +1234,10 @@ class HelloTriangleApplication {
12341234
if (capabilities.currentExtent.width != std::numeric_limits<uint32_t>::max()) {
12351235
return capabilities.currentExtent;
12361236
} else {
1237-
VkExtent2D actualExtent = {WIDTH, HEIGHT};
1237+
int width, height;
1238+
glfwGetWindowSize(window, &width, &height);
1239+
1240+
VkExtent2D actualExtent = {width, height};
12381241

12391242
actualExtent.width = std::max(capabilities.minImageExtent.width, std::min(capabilities.maxImageExtent.width, actualExtent.width));
12401243
actualExtent.height = std::max(capabilities.minImageExtent.height, std::min(capabilities.maxImageExtent.height, actualExtent.height));

code/staging_buffer.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -893,7 +893,10 @@ class HelloTriangleApplication {
893893
if (capabilities.currentExtent.width != std::numeric_limits<uint32_t>::max()) {
894894
return capabilities.currentExtent;
895895
} else {
896-
VkExtent2D actualExtent = {WIDTH, HEIGHT};
896+
int width, height;
897+
glfwGetWindowSize(window, &width, &height);
898+
899+
VkExtent2D actualExtent = {width, height};
897900

898901
actualExtent.width = std::max(capabilities.minImageExtent.width, std::min(capabilities.maxImageExtent.width, actualExtent.width));
899902
actualExtent.height = std::max(capabilities.minImageExtent.height, std::min(capabilities.maxImageExtent.height, actualExtent.height));

code/swap_chain_recreation.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -750,7 +750,10 @@ class HelloTriangleApplication {
750750
if (capabilities.currentExtent.width != std::numeric_limits<uint32_t>::max()) {
751751
return capabilities.currentExtent;
752752
} else {
753-
VkExtent2D actualExtent = {WIDTH, HEIGHT};
753+
int width, height;
754+
glfwGetWindowSize(window, &width, &height);
755+
756+
VkExtent2D actualExtent = {width, height};
754757

755758
actualExtent.width = std::max(capabilities.minImageExtent.width, std::min(capabilities.maxImageExtent.width, actualExtent.width));
756759
actualExtent.height = std::max(capabilities.minImageExtent.height, std::min(capabilities.maxImageExtent.height, actualExtent.height));

code/texture_image.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1205,7 +1205,10 @@ class HelloTriangleApplication {
12051205
if (capabilities.currentExtent.width != std::numeric_limits<uint32_t>::max()) {
12061206
return capabilities.currentExtent;
12071207
} else {
1208-
VkExtent2D actualExtent = {WIDTH, HEIGHT};
1208+
int width, height;
1209+
glfwGetWindowSize(window, &width, &height);
1210+
1211+
VkExtent2D actualExtent = {width, height};
12091212

12101213
actualExtent.width = std::max(capabilities.minImageExtent.width, std::min(capabilities.maxImageExtent.width, actualExtent.width));
12111214
actualExtent.height = std::max(capabilities.minImageExtent.height, std::min(capabilities.maxImageExtent.height, actualExtent.height));

0 commit comments

Comments
 (0)