Properly handle resize
This commit is contained in:
parent
3643d10cac
commit
08648a417f
2 changed files with 20 additions and 2 deletions
|
|
@ -40,8 +40,26 @@ void VulkanExample::getEnabledFeatures()
|
||||||
deviceCreatepNextChain = &enabledPhysicalDeviceShadingRateImageFeaturesNV;
|
deviceCreatepNextChain = &enabledPhysicalDeviceShadingRateImageFeaturesNV;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
If the window has been resized, we need to recreate the shading rate image
|
||||||
|
*/
|
||||||
|
void VulkanExample::handleResize()
|
||||||
|
{
|
||||||
|
// Delete allocated resources
|
||||||
|
vkDestroyImageView(device, shadingRateImage.view, nullptr);
|
||||||
|
vkDestroyImage(device, shadingRateImage.image, nullptr);
|
||||||
|
vkFreeMemory(device, shadingRateImage.memory, nullptr);
|
||||||
|
// Recreate image
|
||||||
|
prepareShadingRateImage();
|
||||||
|
}
|
||||||
|
|
||||||
void VulkanExample::buildCommandBuffers()
|
void VulkanExample::buildCommandBuffers()
|
||||||
{
|
{
|
||||||
|
if (resized)
|
||||||
|
{
|
||||||
|
handleResize();
|
||||||
|
}
|
||||||
|
|
||||||
VkCommandBufferBeginInfo cmdBufInfo = vks::initializers::commandBufferBeginInfo();
|
VkCommandBufferBeginInfo cmdBufInfo = vks::initializers::commandBufferBeginInfo();
|
||||||
|
|
||||||
VkClearValue clearValues[2];
|
VkClearValue clearValues[2];
|
||||||
|
|
@ -377,9 +395,8 @@ void VulkanExample::prepare()
|
||||||
VulkanExampleBase::prepare();
|
VulkanExampleBase::prepare();
|
||||||
loadAssets();
|
loadAssets();
|
||||||
|
|
||||||
vkCmdBindShadingRateImageNV = reinterpret_cast<PFN_vkCmdBindShadingRateImageNV>(vkGetDeviceProcAddr(device, "vkCmdBindShadingRateImageNV"));
|
|
||||||
|
|
||||||
// [POI]
|
// [POI]
|
||||||
|
vkCmdBindShadingRateImageNV = reinterpret_cast<PFN_vkCmdBindShadingRateImageNV>(vkGetDeviceProcAddr(device, "vkCmdBindShadingRateImageNV"));
|
||||||
physicalDeviceShadingRateImagePropertiesNV.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV;
|
physicalDeviceShadingRateImagePropertiesNV.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV;
|
||||||
VkPhysicalDeviceProperties2 deviceProperties2{};
|
VkPhysicalDeviceProperties2 deviceProperties2{};
|
||||||
deviceProperties2.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2;
|
deviceProperties2.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2;
|
||||||
|
|
|
||||||
|
|
@ -56,6 +56,7 @@ public:
|
||||||
VulkanExample();
|
VulkanExample();
|
||||||
~VulkanExample();
|
~VulkanExample();
|
||||||
virtual void getEnabledFeatures();
|
virtual void getEnabledFeatures();
|
||||||
|
void handleResize();
|
||||||
void buildCommandBuffers();
|
void buildCommandBuffers();
|
||||||
void loadglTFFile(std::string filename);
|
void loadglTFFile(std::string filename);
|
||||||
void loadAssets();
|
void loadAssets();
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue