Proper cleanup
This commit is contained in:
parent
144c0b66c0
commit
07970bb1e3
1 changed files with 10 additions and 3 deletions
|
|
@ -25,7 +25,15 @@ VulkanExample::VulkanExample() : VulkanExampleBase(ENABLE_VALIDATION)
|
||||||
|
|
||||||
VulkanExample::~VulkanExample()
|
VulkanExample::~VulkanExample()
|
||||||
{
|
{
|
||||||
|
vkDestroyPipeline(device, basePipelines.masked, nullptr);
|
||||||
|
vkDestroyPipeline(device, basePipelines.opaque, nullptr);
|
||||||
|
vkDestroyPipeline(device, shadingRatePipelines.masked, nullptr);
|
||||||
|
vkDestroyPipeline(device, shadingRatePipelines.opaque, nullptr);
|
||||||
vkDestroyPipelineLayout(device, pipelineLayout, nullptr);
|
vkDestroyPipelineLayout(device, pipelineLayout, nullptr);
|
||||||
|
vkDestroyDescriptorSetLayout(device, descriptorSetLayout, nullptr);
|
||||||
|
vkDestroyImageView(device, shadingRateImage.view, nullptr);
|
||||||
|
vkDestroyImage(device, shadingRateImage.image, nullptr);
|
||||||
|
vkFreeMemory(device, shadingRateImage.memory, nullptr);
|
||||||
shaderData.buffer.destroy();
|
shaderData.buffer.destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -36,7 +44,6 @@ void VulkanExample::getEnabledFeatures()
|
||||||
enabledPhysicalDeviceShadingRateImageFeaturesNV = {};
|
enabledPhysicalDeviceShadingRateImageFeaturesNV = {};
|
||||||
enabledPhysicalDeviceShadingRateImageFeaturesNV.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV;
|
enabledPhysicalDeviceShadingRateImageFeaturesNV.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV;
|
||||||
enabledPhysicalDeviceShadingRateImageFeaturesNV.shadingRateImage = VK_TRUE;
|
enabledPhysicalDeviceShadingRateImageFeaturesNV.shadingRateImage = VK_TRUE;
|
||||||
// @todo
|
|
||||||
deviceCreatepNextChain = &enabledPhysicalDeviceShadingRateImageFeaturesNV;
|
deviceCreatepNextChain = &enabledPhysicalDeviceShadingRateImageFeaturesNV;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -211,10 +218,10 @@ void VulkanExample::prepareShadingRateImage()
|
||||||
for (uint32_t y = 0; y < imageExtent.height; y++) {
|
for (uint32_t y = 0; y < imageExtent.height; y++) {
|
||||||
for (uint32_t x = 0; x < imageExtent.width; x++) {
|
for (uint32_t x = 0; x < imageExtent.width; x++) {
|
||||||
const float deltaX = (float)imageExtent.width / 2.0f - (float)x;
|
const float deltaX = (float)imageExtent.width / 2.0f - (float)x;
|
||||||
const float deltaY = (float)imageExtent.height / 2.0f - (float)y;
|
const float deltaY = ((float)imageExtent.height / 2.0f - (float)y) * ((float)width / (float)height);
|
||||||
const float dist = std::sqrt(deltaX * deltaX + deltaY * deltaY);
|
const float dist = std::sqrt(deltaX * deltaX + deltaY * deltaY);
|
||||||
for (auto pattern : patternLookup) {
|
for (auto pattern : patternLookup) {
|
||||||
if (dist <= pattern.first) {
|
if (dist < pattern.first) {
|
||||||
*ptrData = pattern.second;
|
*ptrData = pattern.second;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue